Тип '_' не имеет члена 'id' SwiftUI - PullRequest
1 голос
/ 24 февраля 2020

Итак, в последние пару часов я пытался создать горизонтальную стопку карт, которая будет отображать самые последние заголовки для проекта, над которым я работаю. То, где я сейчас нахожусь, задерживает весь мой поток, потому что мой список не может найти мою переменную id в моей структуре результатов. Ниже я приложил код, и любая помощь будет оценена.

HeadlinesUI.swift - Скриншот

import SwiftUI

struct Response: Codable {
    var results: [Result]
}

struct Result: Codable {
    var id: Int
    var title: String
    var header_image: String
    var summary: String
}

struct HeadlineUI: View {
    @State var results = [Result]()

    var body: some View {
        ScrollView(.horizontal) {
            HStack(spacing: 20) {
                List(results, id: \.id) { items in

                }
                .onAppear(perform: loadData)
            }
        }
    }

    func loadData() {

    }
}

struct HeadlineUI_Previews: PreviewProvider {
    static var previews: some View {
        HeadlineUI()
    }
}

1 Ответ

0 голосов
/ 24 февраля 2020

Как уже упоминалось в комментариях Result - это тип в Swift, поэтому вы должны использовать другое имя.

Я выбрал:

struct MyResult: Codable {
    var id: Int
    var title: String
    var header_image: String
    var summary: String
}

, поскольку он имеет id вы можете сделать это Identifiable:

extension MyResult: Identifiable {}

для тела:

var body: some View {
    ScrollView(.horizontal) {
        HStack(spacing: 20) {
            ForEach(results) { result in
                Text(result.title)
            }
            .onAppear(perform: { self.loadData() })
        }
    }
}

Вам скорее понадобится ForEach, затем List и Строитель не может быть пустым. Также onAppear принимает закрытие в качестве аргумента. Как только вы сделаете все изменения, View будет вести себя как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...