CoreData 里面的 model 都是 class,那么当这些 model 和 SwiftUI 一起使用的时候,每次 property 更改的时候界面就不会自动刷新了,需要手动调用objectWillChange
来手动刷新,比如
self.api.watchValue = "newvalue"
self.api.objectWillChange.send()
有什么好的解决方案吗?
1
ufo22940268 OP 发现 NSManagedObject 是 conforms to ObservableObject. 而且居然用 ObservedObject 进行声明之后能正常刷新 view,虽然 property 没有用 @Published 进行修饰,也能正常 refresh
``` struct ContentView: View { @ObservedObject var entity: MyEntity var body: some View { NavigationView { VStack { Text("asdfasdf \(entity.name!)") Button("btn") { self.entity.name = "kkkkkkkk" } NavigationLink(destination: ContentView(entity: entity)) { Text("jump") } } } } } ``` |
2
ufo22940268 OP |