Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 神秘的核心数据故障崩溃_Ios_Objective C_Core Data_Nsmanagedobject - Fatal编程技术网

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无法实现错误”,但在另一个上下文中,该对象仍然存在,它是一个错误,并且您尝试访问它的某些属性

不要忘记,对象可以作为关系的级联删除规则而被删除

以下是可能的时间表:

  • 对象是在上下文A中获取的。默认情况下,它是一个错误
  • 表示存储中相同数据的对象在上下文B中获取
  • 该对象在上下文B中被删除
  • 保存上下文B会导致从存储中删除数据
  • 访问上下文A中对象的某些属性
  • 故障正在被触发。核心数据试图完成故障,但永久存储中不再有数据

  • 您的代码中是否有任何地方可以在不同线程之间共享NSManagedObject?例如,在主线程上获取对象,然后将它们放入dispatch_async(后台队列…)中进行处理。或者您可以从其他线程访问在主线程上创建的NSManagedObjectContext?据我所知,还没有,而且已经做了很多工作来避免这种情况。@MishaKarpenko可能走的是正确的道路。这听起来像是线程问题。像这样的错误通常发生在线程边界被破坏的时候。我理解错误等等,我只是不知道在应用程序中问题到底出在哪里。通常,如果我尝试访问一个无法排除的故障,堆栈跟踪将指向该位置,为修复提供一些线索。在这种情况下,它似乎发生在某种我无法控制的背景过程中。