簡體   English   中英

SwiftUI:解析 JSON 並創建動態列表

[英]SwiftUI: Parse JSON and create dynamic list

我想解析/解碼一個 JSON字符串,然后創建一個動態列表。

JSON 示例: [{"course":"course1","teacher":"teacherName1"},{"course":"course1","teacher":"teacherName2"}]

我的希望:

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<_>?'

我是 swift 的新手,抱歉;)

我做了一個例子,你可以遵循:

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結構確認為IdentifiableCodable以便List可以迭代課程數組。 此外,我默認為空Data和空課程數組,以防解碼失敗。 您可以根據需要在此處編寫更好的錯誤處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM