我的情况与这个问题类似。我正在使用带有以下代码的轻量级迁移,来自 Apple 文档和其他 SO 线程的相当普通的。它在初始化 Core Data 堆栈时在应用程序启动时运行。
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
nil];
NSError *error = nil;
NSString *storeType = nil;
if (USE_SQLITE) { // app configuration
storeType = NSSQLiteStoreType;
} else {
storeType = NSBinaryStoreType;
}
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
// the following line sometimes crashes on app startup
if (![persistentStoreCoordinator addPersistentStoreWithType:storeType configuration:nil URL:[self persistentStoreURL] options:options error:&error]) {
// handle the error
}
对于某些用户,尤其是使用速度较慢的设备的用户,我在指示行的日志中确认了崩溃。
我知道解决方法是将其切换为手动映射和迁移。这样做的秘诀是什么?对我来说,很长的路要走所有 Apple 文档,但我不记得有专门用于模式迁移的好的示例和教程。