如何使我的结构可识别?它有一个唯一的数字 uid 字段
How to make my struct Identifiable? It has a unique numeric uid field
在 a simple project at Github 中,我正在尝试下载 JSON 个对象的列表:
struct TopResponse: Codable {
let data: [Top]
}
struct Top: Codable /*, Identifiable */ {
let uid: Int
let elo: Int
let given: String
let photo: String?
let motto: String?
let avg_score: Double?
let avg_time: String?
}
这很好用,下一步我想在 SwiftUI 列表中显示它,然后将 Identifiable
添加到结构中。
不幸的是,这会产生编译错误 Type 'Top' does not conform to protocol 'Identifiable'
:
根据我的后端应用程序的设计,字段 uid
是唯一编号。
所以我试图通过将其类型从 Int
更改为 ObjectIdentifier
来修复编译错误,但是 Swift 编译器仍然对新错误 [=16] 不满意=]
这是怎么回事,编译器现在可能缺少用于解码 JSON 的 uid
字段吗? (它怎么可能知道传入的服务器数据有这样一个字段?)
Identifiable
要求您的结构具有 id
属性,它不会自动找到最适合的结构。
如果您想使用 uid
作为 id
属性,请按如下方式实现:
var id: Int { uid }
在 a simple project at Github 中,我正在尝试下载 JSON 个对象的列表:
struct TopResponse: Codable {
let data: [Top]
}
struct Top: Codable /*, Identifiable */ {
let uid: Int
let elo: Int
let given: String
let photo: String?
let motto: String?
let avg_score: Double?
let avg_time: String?
}
这很好用,下一步我想在 SwiftUI 列表中显示它,然后将 Identifiable
添加到结构中。
不幸的是,这会产生编译错误 Type 'Top' does not conform to protocol 'Identifiable'
:
根据我的后端应用程序的设计,字段 uid
是唯一编号。
所以我试图通过将其类型从 Int
更改为 ObjectIdentifier
来修复编译错误,但是 Swift 编译器仍然对新错误 [=16] 不满意=]
这是怎么回事,编译器现在可能缺少用于解码 JSON 的 uid
字段吗? (它怎么可能知道传入的服务器数据有这样一个字段?)
Identifiable
要求您的结构具有 id
属性,它不会自动找到最适合的结构。
如果您想使用 uid
作为 id
属性,请按如下方式实现:
var id: Int { uid }