您好我有一个核心数据模型,它在客户和工作代码之间有一对多的关系。
当用户同步数据时,我会更新现有的职位代码。在某些时候,用户设备上的关系似乎出现了问题。错误为"coredata could not fulfil a fault for ....."
我通过删除客户而不是工作代码将此错误强制进入我们的测试系统。工作代码仍指向不存在的客户。
我知道这显然很糟糕,并且我不能100%确定用户如何应对这种情况,但无论如何。
当我尝试将有效客户添加到作业代码对象时,会抛出此错误 - 即
//get a valid customer object into a variable called aCust
NSLog(%@"%@",aCust);
aJobCode.customerForJobCode=aCust;
在此行上设置时会引发错误:
aJobCode.customerForJobCode=aCust;
aCust
对象完全正常,并在NSLog
中显示正确的描述和关系。
我理解对象ajobCode
指向的是不存在的客户,但我现在如何将其更新为有效的客户对象?尝试为它分配一个新的客户对象会使它抛出错误,但是指的是我要替换的旧对象。
尝试[aJobCode setCustomerForObject:aCust];
也会抛出错误。我知道这种关系破裂了,如何为它分配一个新的客户对象?
堆栈跟踪如下:
014-09-10 13:39:48.488 mavis[2548:1303] *** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0xd000000000380002 <x-coredata://016A347F-3FE5-4FD0-9BDE-76A8FFA8C8B4/Customer/p14>''
*** First throw call stack:
(
0 CoreFoundation 0x00000001032b8495 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010204199e objc_exception_throw + 43
2 CoreData 0x000000010066c7e3 _PFFaultHandlerLookupRow + 1075
3 CoreData 0x000000010066bffb _PF_FulfillDeferredFault + 235
4 CoreData 0x0000000100699a7e -[NSManagedObject(_NSInternalMethods) _excludeObject:fromPropertyWithKey:andIndex:] + 142
5 CoreData 0x0000000100692797 -[NSManagedObject(_NSInternalMethods) _maintainInverseRelationship:forProperty:oldDestination:newDestination:] + 263
6 CoreData 0x000000010069221b -[NSManagedObject(_NSInternalMethods) _didChangeValue:forRelationship:named:withInverse:] + 571
7 Foundation 0x0000000101a07ea2 NSKeyValueNotifyObserver + 375
8 Foundation 0x0000000101a096f0 NSKeyValueDidChange + 467
9 Foundation 0x00000001019cc79c -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] + 118
10 CoreData 0x0000000100679fac _PF_ManagedObject_DidChangeValueForKeyIndex + 108
11 CoreData 0x00000001006794bd _sharedIMPL_setvfk_core + 237
12 mavis 0x000000010001911b -[jobsJSONSyncVC addNewJobCodes:] + 1387
13 mavis 0x000000010000c3f8 -[jobsJSONSyncVC getJSONSettings] + 1656
14 mavis 0x000000010000bca6 __38-[jobsJSONSyncVC reachabilityChanged:]_block_invoke + 182
15 libdispatch.dylib 0x0000000106bea851 _dispatch_call_block_and_release + 12
16 libdispatch.dylib 0x0000000106bfd72d _dispatch_client_callout + 8
17 libdispatch.dylib 0x0000000106bedb27 _dispatch_root_queue_drain + 380
18 libdispatch.dylib 0x0000000106bedd12 _dispatch_worker_thread2 + 40
19 libsystem_pthread.dylib 0x0000000106f4aef8 _pthread_wqthread + 314
20 libsystem_pthread.dylib 0x0000000106f4dfb9 start_wqthread + 13
)
libc++abi.dylib: terminating with uncaught exception of type _NSCoreDataException
提前致谢
答案 0 :(得分:0)
通常在从持久性存储中删除要引用的对象时抛出此异常。可以生成这个的一个例子是当你有一个对象的引用时,即通过tableView等,你删除了对象,然后尝试引用它的属性或关系。一个更加模糊的案例是您的缓存已损坏,您需要清除它。如果您共享代码,我们可以查明问题。