带有Xcode 11 beta 7的SwiftUI未更新列表/ForEach的内容

带有Xcode 11 beta 7的SwiftUI未更新列表/ForEach的内容,swift,swiftui,xcode11,swiftui-list,Swift,Swiftui,Xcode11,Swiftui List,我一直在尝试一个简单的功能,向列表中添加新条目。该视图将只添加一个新生成的。项目(无需用户输入) 这在以前的beta中是有效的,但是由于某些原因它不再有效了。当我单击Add时,应用程序确实调用了Add()函数并将新条目添加到数组中,但视图根本没有更新 以下是支持类: class PersonStore: ObservableObject { var people: [Person] { willSet { willChange.send(

我一直在尝试一个简单的功能,向列表中添加新条目。该视图将只添加一个新生成的。项目(无需用户输入)

这在以前的beta中是有效的,但是由于某些原因它不再有效了。当我单击Add时,应用程序确实调用了
Add()
函数并将新条目添加到数组中,但视图根本没有更新

以下是支持类:

    class PersonStore: ObservableObject {

    var people: [Person] {
        willSet {
            willChange.send()
        }
    }

    init(people: [Person] = []) {
        self.people = people
    }

    var willChange = PassthroughSubject<Void, Never>()
}

class Person: ObservableObject, Identifiable {

    var id: Int = 0 {
        willSet {
            willChange.send()
        }
    }

    var name: String {
        willSet {
            willChange.send()
        }
    }

     init(id: Int, name: String) {
        self.id = id
        self.name = name
    }

    var willChange = PassthroughSubject<Void, Never>()
}

#if DEBUG

let data = [
    Person(id: 1, name: "David"),
    Person(id: 2, name: "Anne"),
    Person(id: 3, name: "Carl"),
    Person(id: 4, name: "Amy"),
    Person(id: 5, name: "Daisy"),
    Person(id: 6, name: "Mike"),
]

#endif
我发现有人的问题看起来有点相关: 在这里:
问题在于,当您实现自己的ObserveObject时,您使用了错误的发布者。ObserveObject协议创建objectWillChange发布服务器,但您从未使用它,因此SwiftUI从未收到任何更改的通知


类人:可观察对象,可识别{
让id:Int
@出版
变量名称:String
init(id:Int,name:String){
self.id=id
self.name=名称
}
}
我还没有通过编译器运行过,所以可能会有一些输入错误

您不必使用@Published,但对于像您这样的简单案例,它更容易。当然,您还需要更新其他类


还有一件小事,id必须永不更改,List等。使用它将您的数据与他们创建的视图连接起来。

谢谢!!这绝对解决了所有问题。我错过了,因为我的实现在以前的Beta中运行良好。
    class PersonStore: ObservableObject {

    var people: [Person] {
        willSet {
            willChange.send()
        }
    }

    init(people: [Person] = []) {
        self.people = people
    }

    var willChange = PassthroughSubject<Void, Never>()
}

class Person: ObservableObject, Identifiable {

    var id: Int = 0 {
        willSet {
            willChange.send()
        }
    }

    var name: String {
        willSet {
            willChange.send()
        }
    }

     init(id: Int, name: String) {
        self.id = id
        self.name = name
    }

    var willChange = PassthroughSubject<Void, Never>()
}

#if DEBUG

let data = [
    Person(id: 1, name: "David"),
    Person(id: 2, name: "Anne"),
    Person(id: 3, name: "Carl"),
    Person(id: 4, name: "Amy"),
    Person(id: 5, name: "Daisy"),
    Person(id: 6, name: "Mike"),
]

#endif
struct PersonRow: View {

    @ObservedObject var person: Person

    var body: some View {
        HStack {
            Image(systemName: "\(person.id).circle")
            Text(person.name)
        }.font(.title)
    }
}

struct PersonDetail: View {

    @ObservedObject var person: Person

    var body: some View {
        HStack {

            Text("This is \(person.name)")
        }.font(.title)
    }
}