Вкл. iOS 13 a NSManagedObject
objectWillChange
будет генерироваться при изменении его свойства, но не будет уведомлять другого NSManagedObject
в отношении.
Мой временный обходной путь следующий:
class Child: NSManagedObject {
@NSManaged var parent: Parent?
override func willSave() {
super.willSave()
if isUpdated {
parent?.objectWillChange.send()
}
}
}
Это работает. Но в моем случае модель более сложная:
class Child: NSManagedObject {
@NSManaged var parent: Parent?
override func willSave() {
super.willSave()
if isUpdated {
parent?.objectWillChange.send()
// NOTE
// how to let grandParents objectWillChange also omit?
}
}
}
class Parent: NSManagedObject {
@NSManaged var grandParents: Set<GrandParent>
override func willSave() {
super.willSave()
// call grandParents forEach objectWillChange.send() if isUpdated
}
}
В ПРИМЕЧАНИЕ, я могу повторить все grandParent
из parent
и отправить уведомление вручную. Но я считаю, что есть лучшее, общее решение, которое может сделать так, что когда объект грязный, родитель тоже будет помечен как грязный. Тогда все объекты в отношениях будут опубликованы sh objectWillChange
автоматически. Возможно ли это?