CoreData: как создавать и сохранять объекты внутри `NSManagedObjectContextObjectsDidChange`? - PullRequest
0 голосов
/ 08 января 2019

Я хотел бы отреагировать на измененные объекты NSManagedObject, поэтому я настроил наблюдателя:

NotificationCenter.default.addObserver(forName: NSNotification.Name.NSManagedObjectContextObjectsDidChange, object: nil, queue: nil) { notification in
    ...
}

Но я пока не нашел решения, как создавать объекты внутри этого блока.

NotificationCenter.default.addObserver(forName: NSNotification.Name.NSManagedObjectContextObjectsDidChange, object: nil, queue: nil) { notification in
    let context = notification.object as! NSManagedObjectContext
    context.perform {
        let insertedObjects = notification.userInfo?[NSInsertedObjectsKey] as? Set<NSManagedObject> ?? Set<NSManagedObject>()
        // insertedObjects are empty (outside of context.perform they are NOT EMPTY
    }
}

Также, когда я не использую context.perform, я получаю attempt to recursively call -save: on the context aborted. Как мне этого добиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...