由于未捕获的异常“NSObjectInaccessibleException”而终止应用程序,原因:“CoreData 无法完成错误”

Posted

技术标签:

【中文标题】由于未捕获的异常“NSObjectInaccessibleException”而终止应用程序,原因:“CoreData 无法完成错误”【英文标题】:Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault 【发布时间】:2015-10-27 08:33:30 【问题描述】:

我遇到了这个错误,我搜索了关于堆栈溢出的答案,但所有答案都是模棱两可的,我只想知道这个堆栈的行在哪里,它表明我有一个错误,我该怎么做解决这个问题 ?

*** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0xd000000000080000 <x-coredata://53C0FD28-C56A-4608-A320-05A841464DBD/Site/p2>''
*** First throw call stack:
(
    0   CoreFoundation                      0x0000000103ca3c65 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000102db2bb7 objc_exception_throw + 45
    2   CoreData                            0x0000000102a261fd _PFFaultHandlerLookupRow + 1949
    3   CoreData                            0x0000000102a25659 _PF_FulfillDeferredFault + 265
    4   CoreData                            0x0000000102a25437 _sharedIMPL_pvfk_core + 103
    5   CoreData                            0x0000000102a58513 _PF_Handler_Public_GetProperty + 163
    6   Foundation                          0x0000000102333914 -[NSArray(NSKeyValueCoding) valueForKey:] + 437
    7   CoreData                            0x0000000102a8e5af -[_PFBatchFaultingArray valueForKey:] + 79
    8   Foundation                          0x00000001023ada63 -[NSArray(NSKeyValueCoding) valueForKeyPath:] + 435
    9   CoreData                            0x0000000102a8e61f -[_PFBatchFaultingArray valueForKeyPath:] + 79
    10  CoreData                            0x0000000102b21ba1 __43-[NSFetchedResultsController performFetch:]_block_invoke + 481
    11  CoreData                            0x0000000102aefc30 gutsOfBlockToNSPersistentStoreCoordinatorPerform + 192
    12  libdispatch.dylib                   0x000000010489e614 _dispatch_client_callout + 8
    13  libdispatch.dylib                   0x0000000104884002 _dispatch_barrier_sync_f_invoke + 365
    14  CoreData                            0x0000000102adfec6 -[NSPersistentStoreCoordinator performBlockAndWait:] + 198
    15  CoreData                            0x0000000102b218dc -[NSFetchedResultsController performFetch:] + 572
    16  OptiChantier                        0x0000000100627930 -[HEQSiteListViewController_iPhone fetchedResultsController] + 720
    17  OptiChantier                        0x00000001006253ca -[HEQSiteListViewController_iPhone numberOfSectionsInTableView:] + 58
    18  UIKit                               0x0000000101357bbe -[_UIFilteredDataSource numberOfSectionsInTableView:] + 112
    19  UIKit                               0x00000001012ceac3 -[UITableViewRowData _updateNumSections] + 84
    20  UIKit                               0x00000001012cf4b4 -[UITableViewRowData invalidateAllSections] + 69
    21  UIKit                               0x000000010111a73b -[UITableView _updateRowData] + 217
    22  UIKit                               0x000000010113b4a5 -[UITableView _rebuildGeometry] + 27
    23  UIKit                               0x0000000101139c12 -[UITableView setLayoutMargins:] + 378
    24  UIKit                               0x0000000101139a5f -[UITableView _setDefaultLayoutMargins:] + 134
    25  UIKit                               0x000000010116cac5 -[UIViewController _setContentOverlayInsets:] + 317
    26  UIKit                               0x000000010116d3f6 -[UIViewController _updateContentOverlayInsetsFromParentIfNecessary] + 1857
    27  UIKit                               0x000000010116cb35 -[UIViewController _updateContentOverlayInsetsForSelfAndChildren] + 101
    28  UIKit                               0x0000000101174db8 -[UIViewController _updateLayoutForStatusBarAndInterfaceOrientation] + 746
    29  UIKit                               0x0000000101178a9b -[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] + 873
    30  UIKit                               0x00000001010bd9c5 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1397
    31  UIKit                               0x00000001010cf48b -[UIScrollView _didMoveFromWindow:toWindow:] + 55
    32  UIKit                               0x00000001010bd70a -[UIView(Internal) _didMoveFromWindow:toWindow:] + 698
    33  UIKit                               0x00000001010b5e8f __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 125
    34  UIKit                               0x00000001010b5e03 -[UIView(Hierarchy) _postMovedFromSuperview:] + 437
    35  UIKit                               0x00000001010bff08 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1660
    36  UIKit                               0x00000001013a680c -[UINavigationTransitionView transition:fromView:toView:] + 479
    37  UIKit                               0x00000001011a4170 -[UINavigationController _startTransition:fromViewController:toViewController:] + 2984
    38  UIKit                               0x00000001011a4408 -[UINavigationController _startDeferredTransitionIfNeeded:] + 523
    39  UIKit                               0x00000001011a4ece -[UINavigationController __viewWillLayoutSubviews] + 43
    40  UIKit                               0x00000001012ef6d5 -[UILayoutContainerView layoutSubviews] + 202
    41  UIKit                               0x00000001010c29eb -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 536
    42  QuartzCore                          0x00000001070b7ed2 -[CALayer layoutSublayers] + 146
    43  QuartzCore                          0x00000001070ac6e6 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
    44  QuartzCore                          0x00000001070ac556 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
    45  QuartzCore                          0x000000010701886e _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 242
    46  QuartzCore                          0x0000000107019a22 _ZN2CA11Transaction6commitEv + 462
    47  QuartzCore                          0x000000010701a0d3 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 89
    48  CoreFoundation                      0x0000000103bd6ca7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
    49  CoreFoundation                      0x0000000103bd6c00 __CFRunLoopDoObservers + 368
    50  CoreFoundation                      0x0000000103bcca33 __CFRunLoopRun + 1123
    51  CoreFoundation                      0x0000000103bcc366 CFRunLoopRunSpecific + 470
    52  GraphicsServices                    0x0000000103afba3e GSEventRunModal + 161
    53  UIKit                               0x00000001010428c0 UIApplicationMain + 1282
    54  OptiChantier                        0x00000001005bff6f main + 111
    55  libdyld.dylib                       0x00000001048d2145 start + 1
    56  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type _NSCoreDataException
(lldb) 

【问题讨论】:

你的模型是如何组织的? @kirander 是什么意思? 您的模型中的实体似乎没有倒置关系。我想看看你的模型是如何创建的。我想,你有扩展名为 .xcdatamodeld 的文件? 是的,我明白你的意思,我与 5 个不同的实体有 5 个倒置关系 所以你所有的关系都颠倒了? 【参考方案1】:

问题的出现只是因为:“Core Data 试图实现的对象已从持久存储中删除”。您可以在核心数据编程指南here 中的“无法实现故障”部分阅读更多相关信息。

【讨论】:

感谢您提供文档链接。我对自己很有帮助,在我的代码中发现了关于类似问题的问题。【参考方案2】:

当 fetch 产生这个错误时,通常是因为您删除了一个对象,但关系没有正确更新。

如果您没有在图表中声明反向关系,就会发生这种情况。返回并验证每个关系都有逆关系。

检查您的关系的删除规则。如果其中任何一个是NSNoActionDeleteRule,那么您已经向核心数据做出了自己管理关系的承诺。如果其中任何一个是NSDenyDeleteRule,则可能会拒绝删除,并可能导致深层关系层次结构出现问题。

另一种选择是,您可能会在-[HEQSiteListViewController_iPhone fetchedResultsController][HEQSiteListViewController_iPhone numberOfSectionsInTableView:] 中做一些时髦的事情。这些应该是非常简单的方法,所以看看你是否在那里做了一些有点阴暗或不标准的事情。

【讨论】:

【参考方案3】:

找到了,

我实际上需要在每次保存上下文后添加它:

[_MyContext processPendingChanges]

我知道这很简单,但我花了好几个小时才找到它

【讨论】:

那么您正在做一些“错误”或非常“不常见”的事情,因为除非在特殊情况下,否则这不应该是必要的......或者除非您专门在非主服务器上使用 performBlockAndWait -队列上下文。

以上是关于由于未捕获的异常“NSObjectInaccessibleException”而终止应用程序,原因:“CoreData 无法完成错误”的主要内容,如果未能解决你的问题,请参考以下文章

由于未捕获的异常而终止应用程序 [UIImageView _isResizable]

由于未捕获的异常而终止应用程序,同时加载视图

由于未捕获的异常“NSInternalInconsistencyException”错误而终止应用程序

“由于未捕获的异常而终止应用程序”在推送视图控制器时崩溃

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序