ios - 合并子上下文时出现 NSObjectInaccessbileExceptions

标签 ios core-data

我了解 NSObjectInaccessbileExceptions 的一般情况,并且需要避免尝试在另一个托管上下文/线程中删除的对象中出错。

但是,在我的用户崩溃报告中,我在将子 NSManagedObjectContext 从后台线程 (B) 合并/保存到我的主上下文 (A) 时看到 NSObjectInaccessibleException,这似乎是一种不寻常的情况。

我能想到的唯一可能导致这种情况的情况如下:

  1. 更改线程/上下文中对象的属性 (B)
  2. 删除线程/上下文A中的对象
  3. 保存上下文A
  4. 保存上下文B
  5. 将 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 

最佳答案

您可以在创建子上下文时尝试使用以下行:

privateManagedObjectContext.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy

关于ios - 合并子上下文时出现 NSObjectInaccessbileExceptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18722538/

相关文章:

ios - 带电子邮件密码的 FirebaseUI/Auth

ios - 在#selector 函数中传递数据

ios - NSFetchedResultsController 仍然带回了已经被删除的 NSManagedObject

iphone - 为什么 NSFetchedResultsController 没有用新数据更新?

ios - 在核心数据中使用搜索栏范围

swift - 如何在 MKAnnotation 上显示核心数据中的多个项目

ios - 自定义 UI 按钮不显示标题

python - 使用 Django Rest Framework 和 IOS 应用程序时要使用哪种身份验证?

objective-c - Cocos2d 菜单未注册触摸

ios - 如何将数据保存到模型coredata