最近我在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
如果有帮助,这是堆栈跟踪:
删除映射模型没有帮助,所以我猜它是因为文档试图加载错误/无数据模型,但我还没有找到方法说它应该使用给定的数据模型。
编辑:当我使用自己的iOS核心数据抽象类时,一切都很好。因此,所有邪恶的根源似乎都是NSPersistentDocument
。实际上我不想切换回NSDocument并且必须再次自己实现Core Data处理,所以非常感谢任何帮助!
答案 0 :(得分:0)
您可能已对自动或“推断”迁移无法处理的模型进行了更改。您可能必须提供映射模型以详细说明应如何进行迁移。
哦,并确保您的旧版和新版型都有版本,即版本号。如果没有,自动迁移无法分辨哪个模型是旧模型,哪个模型是新模型。
答案 1 :(得分:0)
好的,我通过覆盖- (id)managedObjectModel
并自己返回一个有效的托管对象模型来实现它。对于具有多个版本的模型,NSPersistentDocument
似乎无法单独执行此操作。