繁体   English   中英

SwiftUI - 如何从可识别结构中读取字符串数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM