相关疑难解决方法(0)

NSManagedObject 更改不会触发 objectWillChange

我有一个核心数据模型,其中一个实体生成到 class 中Task。我正在尝试objectWillChangeNSManagedObject发送(自动,无需手动工作)中获取合并发布者,但它不会。任务实体有一个name属性。

let task = Task(context: container.viewContext)

let taskSubscription = task.objectWillChange.sink(receiveValue: { _ in
    print("Task changed")
})

task.name = "Foo"              // WILL NOT trigger
Run Code Online (Sandbox Code Playgroud)

如果我手动调用发送,订阅将起作用:

task.objectWillChange.send()   // Will trigger
Run Code Online (Sandbox Code Playgroud)

如果我用一个 simple 替换ObservableObject它,它将按预期工作:

class DummyTask: ObservableObject {
    @Published var name: String?
}
Run Code Online (Sandbox Code Playgroud)
let dummy = DummyTask()
let dummySubscription = dummy.objectWillChange.sink(receiveValue: { _ in
    print("Dummy changed")
})

dummy.name = "Foo"              // Will trigger
dummy.objectWillChange.send()   // Will trigger
Run Code Online (Sandbox Code Playgroud)

NSManagedObject 被窃听了吗?我应该如何观察通用实体对象的变化?我应该如何让 SwiftUI 看到它们? …

core-data swift swiftui combine

9
推荐指数
2
解决办法
2557
查看次数

标签 统计

combine ×1

core-data ×1

swift ×1

swiftui ×1