创建持久存储时NSPersistentDocument崩溃

时间:2011-03-09 13:37:23

标签: objective-c macos core-data nspersistentdocument

最近我在Core Data模型中添加了一个新实体,因此我为该模型创建了一个新版本,并为其创建了一个映射模型。但是,现在我的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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

哦,并确保您的旧版和新版型都有版本,即版本号。如果没有,自动迁移无法分辨哪个模型是旧模型,哪个模型是新模型。

答案 1 :(得分:0)

好的,我通过覆盖- (id)managedObjectModel并自己返回一个有效的托管对象模型来实现它。对于具有多个版本的模型,NSPersistentDocument似乎无法单独执行此操作。