对于这么简单的问题,我真的很抱歉,但我尝试了几种方法,无法找到解决方案。
我只想在配料实体中添加时间戳属性。每当我更改recipes.xcdatamodel时,我都会得到:
错误NSError域:@“NSCocoaErrorDomain” - 代码:134100 0x000000010c162890
我已经尝试过模型版本,并且:
options:@{NSMigratePersistentStoresAutomaticallyOption:@YES,
NSInferMappingModelAutomaticallyOption:@YES}
代码是Apple提供的原创代码!
答案 0 :(得分:0)
在Project Navigator中选择您的.xcdatamodeld
文件。
在菜单选项"编辑器"下,选择"添加模型版本"。
将创建数据模型文件的新副本。
在这个新副本中,为简单起见,我们将其称为版本2,您需要添加一个属性来存储时间。
在.xcdatamodeld
文件的版本2中(我在这里注意 - 小心选择新文件而不是旧文件)添加属性,调用它" timeStamp",设置输入"日期",然后保存。
现在,当您运行示例项目时,您已经包含在"核心数据堆栈中的迁移选项"将存储的信息从旧的.xcdatamodeld
文件迁移到该文件的版本2.
另请参阅...... Core Data; Cocoa error 134100
<强>更新强>
我加载了iPhoneCoreDataRecipes示例代码,然后按照这些步骤...
Ingredient.m
文件,添加了@dynamic timeStamp
,Ingredient.h
文件,添加了@property (nonatomic, retain) NSDate *timeStamp;
,到RecipesAppDelegate.m
文件,添加了以下代码行......
NSMutableDictionary *options = [NSMutableDictionary dictionary];
[options setValue:[NSNumber numberWithBool:YES]
forKey:NSMigratePersistentStoresAutomaticallyOption];
[options setValue:[NSNumber numberWithBool:YES]
forKey:NSInferMappingModelAutomaticallyOption];
更改了此行代码以包含我上面提到的选项
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
并执行了Build&amp;运行
我遇到了不同的消息......
Can't merge models with two different entities named 'Ingredient'
这触发了我需要更改这行代码的内存,
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
这两行代码......
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:classPersistentStore withExtension:@"momd"];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:self.modelURL];
这对我来说没有错误加载。
请按照以下步骤操作 - 也应该适合您。