Как сделать мою структуру идентифицируемой? Он имеет уникальное числовое поле 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 }
Другие вопросы по тегам