SwiftUI,JSON文件中的列表仅显示第一个元素

时间:2020-07-01 12:34:20

标签: json swiftui swiftui-list

请使用JSON帮助了解SwiftUI json文件读取并打印,但是当您创建列表时,它仅读取第一个元素..我在做什么错???

struct ContentView: View {
    var fetch = Fetch()
    
    public var body: some View {
      
//        Text(fetch.persons.description)
        List(fetch.persons){ user in
            Text(user.name)
            }
    }
}

List json.description

1 个答案:

答案 0 :(得分:0)

List用于符合Identifiable的对象,并且id用于唯一地标识每个对象,这就是List能够跟踪插入,删除的方式和编辑。

在您的情况下,idnil,这会破坏它。

相反,请确保id唯一地标识列表中的每个对象:

struct Foo: Identifiable {
  var id = UUID()
  // ...
}
var foos: [Foo]
List(foos) { foo in 
   // ...
}

或者,您需要为属性提供一个KeyPath,该属性可以充当唯一的ID(并且必须符合Hashable),该属性可以是元素本身。

struct Foo: Hashable { }
var foos: [Foo]
List(foos, id: \.self) {
  // ...
}