簡體   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