2016-01-13 55 views
0

最近,当调查UIPickerView的一些奇怪的UI行为时,我得出了这样的结论,那是因为我正在重新加载它的组件,它被称为观察NSManagedObjectContextObjectsDidChangeNotification。事情是,至少我很确定这将始终从主线程中调用。但是我错了。我使用UIManagedDocument,有时我从另一个线程以下通知:CoreData ContextObjectsDidChangeNotification从另一个线程调用

NSConcreteNotification 0x14a2664b0 {name = NSObjectsChangedInManagingContextNotification; object = <NSManagedObjectContext: 0x14a3e1be0>; userInfo = { 
invalidatedAll =  (
    "0xd00000000d5c000e <x-coredata://B12EF0BD-E372-44D2-AF2F-8E28C5EF3E00/AdditionalAssetAttributes/p855>", 
    "0xd00000000d58000e <x-coredata://B12EF0BD-E372-44D2-AF2F-8E28C5EF3E00/AdditionalAssetAttributes/p854>", 
    "0xd00000000d5c000c <x-coredata://B12EF0BD-E372-44D2-AF2F-8E28C5EF3E00/Asset/p855>", 
    "0xd00000000d58000c <x-coredata://B12EF0BD-E372-44D2-AF2F-8E28C5EF3E00/Asset/p854>", 
    "0xd000000001d40018 <x-coredata://B12EF0BD-E372-44D2-AF2F-8E28C5EF3E00/SidecarFile/p117>", 
    "0xd000000001d00018 <x-coredata://B12EF0BD-E372-44D2-AF2F-8E28C5EF3E00/SidecarFile/p116>" 
); 
managedObjectContext = "<NSManagedObjectContext: 0x14a3e1be0>"; 

我的问题是:没有人知道为什么这个通知被叫什么名字?什么是invalidateAll元素的目的。此外,我不知道AdditionalAssetAttributesSidecarFile是。

谢谢!

+0

你观察'NSObjectsChangedInManagingContextNotification'或'NSManagedObjectContextObjectsDidChangeNotification'?你的问题说一个,但你的输出显示另一个。 –

+0

我想'NSObjectsChangedInManagingContextNotification'是NSManagedObjectContextObjectsDidChangeNotification'的'值。 –

+0

刚试过这里:'的NSLog(@ “%@”,NSManagedObjectContextObjectsDidChangeNotification);'打印:'NSObjectsChangedInManagingContextNotification' –

回答

0

我经常看到此通知,以及iOS的11的没有太多的文档,但似乎如果通知的userInfo包含密钥NSInvalidatedAllObjectsKeyinvalidatedAll),则必须重新获取来自文档的所有NSManagedObject的那你的应用程序也有参考。未能看到会使他们全部不再可用。数组的内容可以忽略不计(例如我经常发现它是空的)

相关问题