【发布时间】:2021-10-15 17:30:18
【问题描述】:
我有一个从 JSON 解析的结构,但包含另一个必须可识别的结构 Article。它看起来像这样:
import Foundation
struct TopHeadlines: Codable {
var totalArticles: Int
var articles: [Article]
struct Article: Codable {
var title: String
var description: String
var url: String
var image: String
var publishedAt: String
var source: Source
}
struct Source: Codable {
var name: String
var url: String
}
var json: Data? {
return try? JSONEncoder().encode(self)
}
}
extension TopHeadlines.Article: Identifiable {
var id: UUID { return UUID() }
}
我需要生成 UUID 来访问 newImages 字典中的图像:
List(viewModel.articles, id: \.id) { article in
HStack {
OptionalImage(uiImage: viewModel.newsImages[article.id])
Text(article.id.uuidString)
Text(article.id.uuidString)
Text(article.id.uuidString)
}
}
但是三个文本视图会打印三个不同的 UUID:
CC83B8AE-61B1-4A7D-A8A4-1B1E98C27CE7
545C1D28-F098-48A3-8C3C-A98BB54F9751
39B8383C-A2D8-46B0-BA51-1B861AF09762
我应该如何为Article struct 创建 ID,这样它就不会每次都重新生成?
【问题讨论】:
-
那个
id属性是一个计算属性,所以每次访问它都会返回一个全新的UUID。