SwiftUI - Как я могу прочитать массив строк из идентифицируемой структуры - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь провести l oop через массив строк, который я создал в моей идентифицируемой структуре. Я могу прочитать одну запись массива, но когда я помещаю ее в foreach l oop, я не могу l oop просмотреть все записи. В основном я хочу показать все активы, которые есть у выбранного человека. Проблема с Foreach в структуре DetailView. Пожалуйста, смотрите изображение и код ниже.

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()
    }
}

1 Ответ

0 голосов
/ 20 апреля 2020

попробуйте

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()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...