Позвольте родительскому NSManagedObject's objectWillChange отправить значение, когда свойство объекта отношения изменилось - PullRequest
0 голосов
/ 29 марта 2020

Вкл. 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 автоматически. Возможно ли это?

...