从备份还原会导致应用程序崩溃

时间:2014-01-06 21:52:40

标签: ios core-data

我现在已经在Core Data上挣扎了3天,而且我只是倒退了。我不得不从备份中恢复整个项目,现在我明白了:

2014-01-06 14:47:45.911 MyClub[1980:5003] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't merge models with two different entities named 'SuperGroups''
*** First throw call stack:
(
    0   CoreFoundation                      0x0000000101e70795 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000101bd3991 objc_exception_throw + 43
    2   CoreData                            0x00000001000fba1d +[NSManagedObjectModel modelByMergingModels:] + 3357
    3   CoreData                            0x00000001000b8e49 +[NSManagedObjectModel mergedModelFromBundles:] + 521
    4   MyClub                              0x0000000100008499 -[AppDelegate managedObjectModel] + 105
    5   MyClub                              0x00000001000085fa -[AppDelegate persistentStoreCoordinator] + 266
    6   MyClub                              0x000000010000836c -[AppDelegate managedObjectContext] + 92
    7   MyClub                              0x000000010000b112 __38-[MyDownloader populateSuperGroupList]_block_invoke + 1058
    8   CFNetwork                           0x000000010273240e __50-[__NSCFLocalDownloadTask _private_fileCompletion]_block_invoke227 + 83
    9   Foundation                          0x00000001017fc19b -[NSBlockOperation main] + 75
    10  Foundation                          0x000000010184a844 -[__NSOperationInternal _start:] + 623
    11  Foundation                          0x000000010184c71b __NSOQSchedule_f + 64
    12  libdispatch.dylib                   0x0000000102d4e6fd _dispatch_client_callout + 8
    13  libdispatch.dylib                   0x0000000102d3de37 _dispatch_queue_drain + 481
    14  libdispatch.dylib                   0x0000000102d3dbfc _dispatch_queue_invoke + 112
    15  libdispatch.dylib                   0x0000000102d3eb14 _dispatch_root_queue_drain + 257
    16  libdispatch.dylib                   0x0000000102d3ed65 _dispatch_worker_thread2 + 40
    17  libsystem_pthread.dylib             0x00000001030f8ef8 _pthread_wqthread + 314
    18  libsystem_pthread.dylib             0x00000001030fbfb9 start_wqthread + 13
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

我该怎么办(除了在核心数据上大声宣誓,我已多次尝试过)?

2 个答案:

答案 0 :(得分:1)

您的项目中似乎有两个托管对象模型(两者都有一个名为SuperGroups的实体)。尝试通过其URL加载特定的一个,或从项目中删除副本。

答案 1 :(得分:0)

每当您对Core Data的对象模型进行更改时,您必须确保在模拟器/手机上删除该应用程序。设备上的模型必须与代码中的模型匹配,否则您将收到错误。

有一个流程可以让您在技术上拥有两个单独的模型,这样当您说更新到应用程序商店时,您可以执行此操作,而无需用户删除所有数据。如果您需要这个,我会查看“核心数据版本控制”。