2

我有一个非常烦人的问题。我有一个“CoreData”应用程序,目前正在生产中,一切正常。我有应用程序的更新,但每当更新安装在原始应用程序上时,应用程序就会在下面的代码行中崩溃。

[_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]

我收到的错误是“Can't use fetch request with fetched property description (entity model mismatch).”。

CoreData 模型发生了更改,但我为我的更改创建了一个新版本的模型,因此它应该将更改合并到新模型中。这是我已经做了一百次的相同过程,并且始终有效。这次除外。

我能想到的唯一可能导致此问题的区别是,我从 CoreData 模型中删除了一些旧的 Fetch Requests,但这又是在更新的模型版本中完成的,而不是在原始模型中完成的。

大家都知道是什么原因造成的吗?正如我所提到的,我确实更新了 CoreData 模型版本并将其选为应用程序的当前模型。此外,非常奇怪的是,只有在更新后第一次运行应用程序时才会发生崩溃。崩溃发生后,我可以重新启动应用程序,一切正常。

谢谢!

!** 编辑 **!

如果这有帮助,这是我的调用堆栈。

Last Exception Backtrace:
0   CoreFoundation                  0x32ac029e __exceptionPreprocess + 158
1   libobjc.A.dylib                 0x3a95697a objc_exception_throw + 26
2   CoreFoundation                  0x32ac01c0 +[NSException raise:format:] + 100
3   CoreData                        0x328a2678 -[NSFetchedPropertyDescription setFetchRequest:] + 164
4   CoreData                        0x328a2788 -[NSFetchedPropertyDescription _createCachesAndOptimizeState] + 76
5   CoreData                        0x32899b0a -[NSEntityDescription(_NSInternalMethods) _createCachesAndOptimizeState] + 1238
6   CoreData                        0x328d18a6 -[NSManagedObjectModel(_NSInternalMethods) _createCachesAndOptimizeState] + 702
7   CoreData                        0x3284e534 -[NSManagedObjectModel(_NSInternalMethods) _setIsEditable:optimizationStyle:] + 272
8   CoreData                        0x3284e2f2 -[NSPersistentStoreCoordinator initWithManagedObjectModel:] + 302
9   CoreData                        0x32939c4c -[NSSQLiteInPlaceMigrationManager migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:] + 692
10  CoreData                        0x328da838 -[NSMigrationManager migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:] + 512
11  CoreData                        0x3292bc54 -[NSStoreMigrationPolicy(InternalMethods) migrateStoreAtURL:toURL:storeType:options:withManager:error:] + 276
12  CoreData                        0x3292afa8 -[NSStoreMigrationPolicy migrateStoreAtURL:withManager:metadata:options:error:] + 84
13  CoreData                        0x3292c4b2 -[NSStoreMigrationPolicy(InternalMethods) _gatherDataAndPerformMigration:] + 1930
14  CoreData                        0x3284f384 -[NSPersistentStoreCoordinator addPersistentStoreWithType:configuration:URL:options:error:] + 3340
15  MSM iPad                        0x001cb4c2 -[VS_CoreDataManager persistentStoreCoordinator] + 466
16  MSM iPad                        0x001cbb12 -[VS_CoreDataManager initializeCoreDataWithProjectName:] + 94
17  MSM iPad                        0x000b6678 -[AppDelegate application:didFinishLaunchingWithOptions:] (AppDelegate.m:117)
18  UIKit                           0x34928ad4 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 248
19  UIKit                           0x3492865e -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1186
20  UIKit                           0x34920846 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 694
21  UIKit                           0x348c8c34 -[UIApplication handleEvent:withNewEvent:] + 1000
22  UIKit                           0x348c86c8 -[UIApplication sendEvent:] + 68
23  UIKit                           0x348c8116 _UIApplicationHandleEvent + 6150
24  GraphicsServices                0x365bc59e _PurpleEventCallback + 586
25  GraphicsServices                0x365bc1ce PurpleEventCallback + 30
26  CoreFoundation                  0x32a9516e __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 30
27  CoreFoundation                  0x32a95112 __CFRunLoopDoSource1 + 134
28  CoreFoundation                  0x32a93f94 __CFRunLoopRun + 1380
29  CoreFoundation                  0x32a06eb8 CFRunLoopRunSpecific + 352
30  CoreFoundation                  0x32a06d44 CFRunLoopRunInMode + 100
31  UIKit                           0x3491f480 -[UIApplication _run] + 664
32  UIKit                           0x3491c2fc UIApplicationMain + 1116
33  MSM iPad                        0x000b6432 main (main.m:17)
34  libdyld.dylib                   0x3ad8db1c start + 0
4

1 回答 1

1

我发现我必须在应用更新后删除缓存:

要么不缓存获取的项目

 NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];

或在更新时删除缓存

[NSFetchedResultsController deleteCacheWithName:@"Master"];
于 2013-09-04T22:09:52.977 回答