虽然我的一个NSManagedObjectContext正在运行其performBlock
用户已选择退出其帐户(这将重置所有上下文和删除持久性存储)。该复位代码显然是被在相似的时间为performBlock运行,因此应用程序崩溃与例外:iOS 8应用程序崩溃时重置我的NSManagedObjectContext,而在performBlock
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Object's persistent store is not reachable from this NSManagedObjectContext's coordinator'
它崩溃的准确位置似乎是当一个上下文在其performBlock
扑救,然后它会发出did save
通知,并合并到其他上下文中。这里是堆栈跟踪:
0 CoreFoundation 0x03b96df6 __exceptionPreprocess + 182
1 libobjc.A.dylib 0x03820a97 objc_exception_throw + 44
2 CoreData 0x034f7791 _PFRetainedObjectIDCore + 1169
3 CoreData 0x034f72f0 -[NSManagedObjectContext(_NSInternalAdditions) _retainedObjectWithID:] + 32
4 CoreData 0x034db0f3 -[NSManagedObjectContext objectWithID:] + 595
5 CoreData 0x0352e14e _faultBatchAtIndex + 1102
6 CoreData 0x0352ed02 -[_PFBatchFaultingArray objectAtIndex:] + 50
7 CoreData 0x035dd010 +[NSFetchedResultsController(PrivateMethods) _insertIndexForObject:inArray:lowIdx:highIdx:sortDescriptors:] + 144
8 CoreData 0x035d7ba2 -[NSFetchedResultsController(PrivateMethods) _postprocessInsertedObjects:] + 738
9 CoreData 0x035da3dd __77-[NSFetchedResultsController(PrivateMethods) _managedObjectContextDidChange:]_block_invoke + 2285
10 CoreData 0x034e7454 developerSubmittedBlockToNSManagedObjectContextPerform + 196
11 CoreData 0x034e7337 -[NSManagedObjectContext performBlockAndWait:] + 231
12 CoreData 0x035d9acf -[NSFetchedResultsController(PrivateMethods) _managedObjectContextDidChange:] + 127
13 Foundation 0x00eff929 __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke + 40
14 CoreFoundation 0x03b61974 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20
15 CoreFoundation 0x03a4f61b _CFXNotificationPost + 3051
16 Foundation 0x00eeef26 -[NSNotificationCenter postNotificationName:object:userInfo:] + 98
17 CoreData 0x034c84d3 -[NSManagedObjectContext(_NSInternalNotificationHandling) _postObjectsDidChangeNotificationWithUserInfo:] + 83
18 CoreData 0x034d9cbe -[NSManagedObjectContext _mergeChangesFromDidSaveDictionary:usingObjectIDs:] + 3934
19 CoreData 0x034d8d40 -[NSManagedObjectContext mergeChangesFromContextDidSaveNotification:] + 496
20 App 0x00319707 __57-[ContextManager contextDidSavePrivateQueueContext:]_block_invoke + 103
这是仅iOS 8 - iOS 7正常工作。我无法弄清楚的是,如果这是iOS 8的一个错误,我感受到了影响,或者Apple已经将“新功能”引入了Core Data中,这已经打破了我们的重置流程。任何人都可以对此有所了解吗?
“我的一个NSManagedObjectContext”。这似乎表明你有不止一个。他们是亲子还是同龄人? – quellish 2014-10-08 14:59:05
一个是私人的,一个是主要的。没有父母/子女。 – Harry 2014-10-08 15:32:01
如果你正在使用队列封闭,你应该使用亲子,否则你会看到像这样的问题。 – quellish 2014-10-08 15:41:56