核心数据ManagedObjectContext通知内存地址更改

时间:2017-06-03 16:58:10

标签: ios swift core-data

我正在尝试观察其中一个视图控制器中NSManagedObjectContext的更改。

NotificationCenter.default.addObserver(self, selector: #selector(updateData), name: .NSManagedObjectContextObjectsDidChange, object: DataManager.shared.managedObjectContext)

以下是我的核心数据设置:

class DataManager {
    static let shared = DataManager()

    lazy var persistentContainer: NSPersistentContainer = {
        let container = NSPersistentContainer(name: "Store")
        container.loadPersistentStores(completionHandler: { storeDescription, error in
            if let error = error as NSError? {
                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        })
        return container
    }()

    lazy var managedObjectContext: NSManagedObjectContext = {
        let context = self.persistentContainer.viewContext
        context.automaticallyMergesChangesFromParent = true
        context.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy
        return context
    }()
}

我有时会收到通知,但有时候我不会收到通知。如果我将对象设置为nil,我会按预期收到通知。如果我在添加观察者时打印出managedObjectContext,并且在调用通知时(使用notificationObserver中的nil对象),它们指向两个不同的managedObjectContexts。我哪里错了?在第一次设置观察者时初始化上下文是否存在某种竞争条件?

0 个答案:

没有答案