V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
ufo22940268
V2EX  ›  iOS

关于 SwiftUI 里面使用 CoreData

  •  
  •   ufo22940268 · Aug 27, 2020 · 1929 views
    This topic created in 2076 days ago, the information mentioned may be changed or developed.

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

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

    有什么好的解决方案吗?

    2 replies    2020-08-27 10:51:27 +08:00
    ufo22940268
        1
    ufo22940268  
    OP
       Aug 27, 2020
    发现 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")
    }
    }
    }
    }
    }
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2530 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:37 · PVG 10:37 · LAX 19:37 · JFK 22:37
    ♥ Do have faith in what you're doing.