0

最近我在我的核心数据模型中添加了一个新实体,因此我为模型创建了一个新版本并为它创建了一个映射模型。但是,现在我的 NSPersistentDocument 崩溃了,没有明显的原因:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
                                                                        [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

BOOL success = [self configurePersistentStoreCoordinatorForURL:storeURL ofType:typeName modelConfiguration:nil storeOptions:options error:error]; // Line that crashes

控制台日志:

*** -[NSCFArray insertObject:atIndex:]: 尝试插入 nil

如果有帮助,这是堆栈跟踪: 堆栈跟踪

删除映射模型没有帮助,所以我猜是因为文档试图加载错误/无数据模型,但我还没有找到一种方法来说明它应该使用给定的数据模型。

编辑:当我使用自己的 iOS 核心数据抽象类时,一切都很好。所以万恶之源似乎是NSPersistentDocument。实际上我不想切换回 NSDocument 并且必须再次自己实现核心数据处理,所以非常感谢任何帮助!

4

2 回答 2

0

您可能对自动或“推断”迁移无法处理的模型进行了更改。您可能必须提供一个映射模型来详细说明应该如何进行迁移。

哦,请确保您的新旧模型都已版本化,即有版本号。如果不是,则自动迁移无法区分哪个型号是旧型号,哪个型号是新型号。

于 2011-03-09T15:59:36.420 回答
0

好的,我自己通过覆盖- (id)managedObjectModel并返回一个有效的托管对象模型来让它工作。对于具有多个版本的模型,看起来自己NSPersistentDocument无法做到这一点。

于 2011-03-09T16:57:51.707 回答