【发布时间】:2014-04-14 08:50:46
【问题描述】:
如何刷新该死的核心数据对象?
请原谅措辞,我现在只想删除对象 20 分钟。删除就好了,但 Core Data 会在一段时间后引发异常。
到目前为止我试过了:
删除所有对象 (MR_truncateAll),然后保存。
删除所有对象,处理挂起的更改,保存。
关闭撤消管理器,删除,关闭撤消管理器。
删除 Core Data sqlite 文件,销毁上下文,然后重新创建。
使用[MagicalRecord cleanUp],删除核心数据sqlite文件。
不过,当我想创建对象时,经过 2-3 次尝试,我会得到错误,然后因为错误而崩溃。
CoreData could not fulfill a fault for '0xd000000000840002 <x-coredata://...
(
0 CoreFoundation 0x0000000102016795 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000101d79991 objc_exception_throw + 43
2 CoreData 0x0000000100265a93 _PFFaultHandlerLookupRow + 1075
3 CoreData 0x00000001002f33a3 -[NSManagedObject(_NSInternalMethods) _updateFromRefreshSnapshot:includingTransients:] + 243
4 CoreData 0x0000000100297563 -[NSManagedObjectContext(_NestedContextSupport) _copyChildObject:toParentObject:fromChildContext:] + 771
5 CoreData 0x000000010029701b -[NSManagedObjectContext(_NestedContextSupport) _parentProcessSaveRequest:inContext:error:] + 1019
6 CoreData 0x00000001002fd243 __82-[NSManagedObjectContext(_NestedContextSupport) executeRequest:withContext:error:]_block_invoke + 563
7 libdispatch.dylib 0x0000000102ce005a _dispatch_barrier_sync_f_slow_invoke + 45
8 libdispatch.dylib 0x0000000102cef6fd _dispatch_client_callout + 8
9 libdispatch.dylib 0x0000000102cdf46c _dispatch_main_queue_callback_4CF + 354
10 CoreFoundation 0x0000000102074729 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
11 CoreFoundation 0x0000000101fc19a4 __CFRunLoopRun + 1764
12 CoreFoundation 0x0000000101fc0ed3 CFRunLoopRunSpecific + 467
13 GraphicsServices 0x00000001032f03a4 GSEventRunModal + 161
14 UIKit 0x0000000100e48a63 UIApplicationMain + 1010
15 GitHub! 0x0000000100002f53 main + 115
16 libdyld.dylib 0x0000000102f9c7e1 start + 0
)
我使用单一上下文。由 MagicalRecord 在后台创建。
如何删除、刷新Core Data?
【问题讨论】:
-
这个问题的答案有帮助吗:stackoverflow.com/q/12113961/558933
-
cimgf.com/2014/02/25/deleting-objects-in-core-data 是关于这个主题的好书。故障错误通常表示对删除后访问的已删除对象的引用。
标签: ios sqlite core-data magicalrecord