[英]SwiftUI - How do I read a string array out of a Identifiable struct
我正在尝试遍历我在 Identifiable Struct 中创建的字符串数组。 我可以读取数组的单个记录,但是当我将它放在 foreach 循环中时,我无法遍历所有记录。 基本上我想显示所选人员拥有的所有资产。 DetailView 结构中的 Foreach 是问题所在。 请参阅下面的图像和代码。
import SwiftUI
struct Person :Identifiable {
var id = UUID()
var name: String
var assets: [String]
}
extension Person {
static func all() -> [Person] {
return [
Person(name: "John", assets: ["Car1", "Car2"]),
Person(name: "Peter", assets: ["House1", "Car3"])
]
}
}
var persons = Person.all()
struct DetailView: View {
var person1: Person
var body: some View {
List{
Text("NAME")
.bold()
Text(person1.name)
Text("ASSETS")
.bold()
ForEach(person1) {asset in
Text(person1.assets[asset1])
}
.navigationBarTitle(Text(person1.name))
}
}
}
struct ContentView: View {
var body: some View {
NavigationView{
List{
ForEach(persons) {person in
NavigationLink(destination: DetailView(person1: person)) {
Text(person.name)
}
}
}
.navigationBarTitle("Person assets")
.border(Color.black, width: 1)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
尝试这个
import SwiftUI
struct Asset : Identifiable, Hashable {
var id = UUID()
var text : String
init(_ text : String) {
self.text = text
}
}
struct Person :Identifiable {
var id = UUID()
var name: String
var assets: [Asset]
}
extension Person {
static func all() -> [Person] {
return [
Person(name: "John", assets: [Asset("Car1"), Asset("Car2")]),
Person(name: "Peter", assets: [Asset("House1"), Asset("Car3")])
]
}
}
var persons = Person.all()
struct DetailView: View {
var person1: Person
var body: some View {
VStack {
Text("NAME")
.bold()
Text(person1.name)
Text("ASSETS")
.bold()
List (person1.assets, id: \.self) { asset in
Text(asset.text)
}
.navigationBarTitle(Text(person1.name))
}
}
}
struct ContentView: View {
var body: some View {
NavigationView{
List{
ForEach(persons) {person in
NavigationLink(destination: DetailView(person1: person)) {
Text(person.name)
}
}
}
.navigationBarTitle("Person assets")
.border(Color.black, width: 1)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.