我一般了解 NSObjectInaccessbileExceptions,并且需要避免尝试在另一个托管上下文/线程中删除的对象中出错。
但是,在我的用户崩溃报告中,我在将后台线程 (B) 中的子 NSManagedObjectContext 合并/保存到我的主上下文 (A) 时看到了 NSObjectInaccessibleException,这似乎是一种不寻常的情况。
我能想象到的唯一可能导致这种情况的情况如下:
- 在线程/上下文中更改对象的属性 (B)
- 删除线程/上下文 A 中的对象
- 保存上下文 A
- 保存上下文 B
- 将 A 合并到 B 并保存 A -> 引发异常,因为 A 中不存在对象。
有没有其他人在保存这样的上下文时看到异常?我试图手动重现这个,但失败了。是否还有其他可能发生这种情况的情况,是否有任何处理这种情况的提示?
谢谢!
Fatal Exception
NSObjectInaccessibleException
CoreData could not fulfill a fault for '0x1f019da0 <x-coredata://741E65A8-C211-470E-8194-3005F0DFA71C/TrackInfo/p265>'
0 CoreFoundation __exceptionPreprocess + 162
1 libobjc.A.dylib objc_exception_throw + 30
2 CoreData _PFFaultHandlerLookupRow + 1482
3 CoreData -[NSFaultHandler fulfillFault:withContext:] + 24
4 CoreData -[NSManagedObject(_NSInternalMethods) _updateFromRefreshSnapshot:includingTransients:] + 236
5 CoreData -[NSManagedObjectContext(_NestedContextSupport) _copyChildObject:toParentObject:fromChildContext:] + 96
6 CoreData -[NSManagedObjectContext(_NestedContextSupport) _parentProcessSaveRequest:inContext:error:] + 918
7 CoreData __82-[NSManagedObjectContext(_NestedContextSupport) executeRequest:withContext:error:]_block_invoke_0 + 564
8 libdispatch.dylib _dispatch_barrier_sync_f_slow_invoke + 96
9 libdispatch.dylib _dispatch_client_callout + 22
10 libdispatch.dylib _dispatch_main_queue_callback_4CF + 228
11 CoreFoundation __CFRunLoopRun + 1288
12 CoreFoundation CFRunLoopRunSpecific + 356
13 CoreFoundation CFRunLoopRunInMode + 104
14 GraphicsServices GSEventRunModal + 74
15 UIKit UIApplicationMain + 1120
16 app main.m line 13 main
17 app start