我有一个核心数据模型,其中一个实体生成到 class 中Task。我正在尝试objectWillChange从NSManagedObject发送(自动,无需手动工作)中获取合并发布者,但它不会。任务实体有一个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 看到它们? …