2

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'

错误 1

根据我的后端应用程序的设计,该字段uid是一个唯一编号。

所以我试图通过将其类型从更改为来修复编译错误IntObjectIdentifier但 Swift 编译器仍然对新错误不满意Type 'Top' does not conform to protocol 'Decodable'

错误 2

这里发生了什么,编译器现在是否可能缺少uid解码 JSON 的字段?(它怎么可能知道传入的服务器数据有这样一个字段?)

4

1 回答 1

2

Identifiable要求您的结构具有id属性,它不会自动找到最适合的结构。

如果要uid用作id属性,请像这样实现它:

var id: Int { uid }
于 2021-05-04T15:56:15.163 回答