V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ufo22940268
V2EX  ›  iOS

关于 SwiftUI 里面使用 CoreData

  •  
  •   ufo22940268 · 2020-08-27 10:31:26 +08:00 · 1556 次点击
    这是一个创建于 1550 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    有什么好的解决方案吗?

    2 条回复    2020-08-27 10:51:27 +08:00
    ufo22940268
        1
    ufo22940268  
    OP
       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")
    }
    }
    }
    }
    }
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1009 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:00 · PVG 07:00 · LAX 15:00 · JFK 18:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.