Как сделать мою структуру идентифицируемой? Он имеет уникальное числовое поле uid
В простом проекте на 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'
:
По дизайну моего внутреннего приложения поле представляет собой уникальный номер.
Итак, я пытаюсь исправить ошибку компиляции, изменив ее тип с
Int
к
ObjectIdentifier
, но компилятор Swift по-прежнему недоволен новой ошибкой
Type 'Top' does not conform to protocol 'Decodable'
Что здесь происходит, компилятор теперь может пропустить
uid
поле для расшифровки JSON? (и как он мог знать, что входящие данные сервера имеют такое поле?)
1 ответ
Identifiable
требует, чтобы у вашей структуры было свойство, она не находит наиболее подходящее автоматически.
Если вы хотите использовать
uid
как
id
свойство, реализуйте его так:
var id: Int { uid }