SwiftUI: разбирать JSON и создавать динамический список c - PullRequest
0 голосов
/ 14 февраля 2020

Я хотел бы проанализировать / декодировать JSON строку и затем создать список динамических c.

Пример JSON: [{"course":"course1","teacher":"teacherName1"},{"course":"course1","teacher":"teacherName2"}]

Мой wi sh:

List {
  HStack {
    Text("course1")
    Spacer()
    Text("teacherName1")
  }
  HStack {
    Text("course2")
    Spacer()
    Text("teacherName2")
  }
}

Я пробовал это с JSONDecoder () и массивами, но Xcode помечает мой TabView снова и снова этим сообщением: Cannot convert value of type 'Binding<Int>' to expected argument type 'Binding<_>?'

I ' Я новичок в Свифте, простите;)

1 Ответ

2 голосов
/ 15 февраля 2020

Я сделал пример, которому вы можете следовать:

import SwiftUI

let jsonString = """
[{"course":"course1","teacher":"teacherName1"},{"course":"course1","teacher":"teacherName2"}]
"""

let data = jsonString.data(using: .utf8) ?? Data()


struct Course: Codable, Identifiable {

    let id = UUID()
    let course: String
    let teacher: String
}

struct ContentView: View {

    let courses: [Course] = (try? JSONDecoder().decode([Course].self, from: data)) ?? []

    var body: some View {
        List(courses) { course in
            HStack {
                Text(course.course)
                Spacer()
                Text(course.teacher)
            }
        }
    }
}

Я сделал подтверждение структуры Course для Identifiable, а также Codable, чтобы List мог выполнять итерации по массиву. курсов. Также я по умолчанию установил пустой Data и пустой массив курсов в случае неудачного декодирования. Вы можете написать лучшую обработку ошибок здесь в зависимости от ваших потребностей.

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