Ios 神秘的核心数据故障崩溃
我正在通过我的应用程序中的崩溃报告体验一个神秘的核心数据崩溃,我很难想出一个理论来解释它。没有复制步骤,没有明显的原因,但它发生了数千次。崩溃报告相当模糊,但当一个Ios 神秘的核心数据故障崩溃,ios,objective-c,core-data,nsmanagedobject,Ios,Objective C,Core Data,Nsmanagedobject,我正在通过我的应用程序中的崩溃报告体验一个神秘的核心数据崩溃,我很难想出一个理论来解释它。没有复制步骤,没有明显的原因,但它发生了数千次。崩溃报告相当模糊,但当一个NSManagedObject通过属性分配给另一个时,它似乎会发生?任何理论都将受到赞赏 *** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault
NSManagedObject
通过属性分配给另一个时,它似乎会发生?任何理论都将受到赞赏
*** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x1dc92160 <x-coredata://6903F7F9-C600-4A29-A538-B3337F1D0BED/Profile/p47854>''
Last Exception Backtrace:
1 CoreFoundation __exceptionPreprocess + 163
2 libobjc.A.dylib objc_exception_throw + 30
3 CoreData _PFFaultHandlerLookupRow + 1477
4 CoreData _PF_FulfillDeferredFault + 203
5 CoreData _PF_ManagedObject_WillChangeValueForKeywithSetMutation + 71
6 CoreData -[NSManagedObject willChangeValueForKey:withSetMutation:usingObjects:] + 84
7 CoreData -[NSManagedObject _includeObject:intoPropertyWithKey:andIndex:] + 690
8 CoreData -[NSManagedObject _maintainInverseRelationship:forProperty:oldDestination:newDestination:] + 444
9 CoreData -[NSManagedObject _didChangeValue:forRelationship:named:withInverse:] + 1290
10 CoreData -[NSManagedObjectContext observeValueForKeyPath:ofObject:change:context:] + 322
11 Foundation NSKeyValueNotifyObserver + 273
12 Foundation NSKeyValueDidChange + 335
13 Foundation -[NSObject didChangeValueForKey:] + 94
14 CoreData -[NSManagedObject didChangeValueForKey:] + 126
15 CoreData -[NSManagedObject _updateFromRefreshSnapshot:includingTransients:] + 614
16 CoreData -[NSManagedObjectContext _copyChildObject:toParentObject:fromChildContext:] + 96
17 CoreData -[NSManagedObjectContext _parentProcessSaveRequest:inContext:error:] + 554
18 CoreData __82-[NSManagedObjectContext(_NestedContextSupport) executeRequest:withContext:error:]_block_invoke_0 + 565
19 libdispatch.dylib _dispatch_barrier_sync_f_slow_invoke + 81
20 libdispatch.dylib _dispatch_client_callout + 23
21 libdispatch.dylib _dispatch_main_queue_callback_4CF$VARIANT$up + 227
22 CoreFoundation __CFRunLoopRun + 1291
23 CoreFoundation CFRunLoopRunSpecific + 356
24 CoreFoundation CFRunLoopRunInMode + 104
25 GraphicsServices GSEventRunModal + 74
26 UIKit UIApplicationMain + 1120
27 My App main (main.m:18)
28 libdyld.dylib start + 0
***由于未捕获的异常“NSObjectInaccessibleException”而终止应用程序,原因:“CoreData无法为“0x1dc92160”实现故障”
上次异常回溯:
1核心基础uu例外预处理+163
2 libobjc.A.dylib objc_异常_抛出+30
3 CoreData _PFFaultHandlerLookupRow+1477
4芯数据_PF_已完成故障+203
5 CoreData _PF _ManagedObject _将通过设置突变+71更改值forkey
6 CoreData-[NSManagedObject willChangeValueForKey:with设置突变:UsingObject:+84
7核心数据-[NSManagedObject]包括对象:输入属性,键:和索引:+690
8 CoreData-[NSManagedObject\u维护反向关系:forProperty:oldDestination:newDestination:+444
9 CoreData-[NSManagedObject\u didChangeValue:forRelationship:named:WithReverse:+1290
10 CoreData-[NSManagedObjectContext observeValueForKeyPath:ofObject:change:context:+322
11基金NSKEY ValueOffiTys+ 273
12基金会NKEY VIDEDIGRATION+335
13基金会[NSObjultDeCudioRealEng:FIKE::] + 94
14核心数据-[NSManagedObject didChangeValueForKey:+126
15 CoreData-[NSManagedObject\u updateFromRefreshSnapshot:包括瞬态:][614
16 CoreData-[NSManagedObjectContext\u copyChildObject:toParentObject:fromChildContext:+96
17 CoreData-[NSManagedObjectContext\u parentProcessSaveRequest:inContext:error:+554
18 CoreData uu82-[NSManagedObjectContext(NestedContextSupport)executeRequest:withContext:error:][uBlock\uInvoke\u0+565
19 libdispatch.dylib_dispatch_barrier_sync_f_slow_invoke+81
20 libdispatch.dylib_dispatch_client_callout+23
21 libdispatch.dylib_dispatch_main_queue_callback_4CF$VARIANT$up+227
22 CoreFoundation\uuuCFRUnloopRUN+1291
23 CoreFoundation CFRunLoopRunSpecific+356
24 CoreFoundation CFRunLoopRunInMode+104
25图形服务GSEventRunModal+74
26 UIKit UIApplicationMain+1120
27我的主应用程序(main.m:18)
28 libdyld.dylib开始+0
如果已提取的对象已在另一个线程或其他ManagedObjectContext中删除,则在尝试访问已删除对象的属性时,可能会收到异常
这是由于断层作用造成的,如下所述:
当您使用一个上下文从持久性存储中删除某个对象时,通常会发生“CoreData无法实现错误”,但在另一个上下文中,该对象仍然存在,它是一个错误,并且您尝试访问它的某些属性 不要忘记,对象可以作为关系的级联删除规则而被删除 以下是可能的时间表:
您的代码中是否有任何地方可以在不同线程之间共享NSManagedObject?例如,在主线程上获取对象,然后将它们放入dispatch_async(后台队列…)中进行处理。或者您可以从其他线程访问在主线程上创建的NSManagedObjectContext?据我所知,还没有,而且已经做了很多工作来避免这种情况。@MishaKarpenko可能走的是正确的道路。这听起来像是线程问题。像这样的错误通常发生在线程边界被破坏的时候。我理解错误等等,我只是不知道在应用程序中问题到底出在哪里。通常,如果我尝试访问一个无法排除的故障,堆栈跟踪将指向该位置,为修复提供一些线索。在这种情况下,它似乎发生在某种我无法控制的背景过程中。