关于 SwiftUI 里面使用 CoreData

2020-08-27 10:31:26 +08:00
 ufo22940268

CoreData 里面的 model 都是 class,那么当这些 model 和 SwiftUI 一起使用的时候,每次 property 更改的时候界面就不会自动刷新了,需要手动调用objectWillChange来手动刷新,比如

                self.api.watchValue = "newvalue"
                self.api.objectWillChange.send()

有什么好的解决方案吗?

1554 次点击
所在节点    iOS
2 条回复
ufo22940268
2020-08-27 10:50:56 +08:00
发现 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")
}
}
}
}
}
```
ufo22940268
2020-08-27 10:51:27 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/701819

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX