Iphone 典型岩心数据误差
我得到了一个典型的错误: 用于打开存储的模型与用于创建存储的模型不兼容 这就是它的实现方式:Iphone 典型岩心数据误差,iphone,objective-c,Iphone,Objective C,我得到了一个典型的错误: 用于打开存储的模型与用于创建存储的模型不兼容 这就是它的实现方式: NSManagedObjectContext *context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; NSManagedObject *newShot = [NSEntityDescription insertNewObjectForEntityForName:@
NSManagedObjectContext *context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSManagedObject *newShot = [NSEntityDescription insertNewObjectForEntityForName:@"shotName" inManagedObjectContext:context];
NSString *newName= @"test";
[newShot setName:newName];
这就是它的设计方式:
我不仅收到了上面的消息,而且还收到了以下警告:
“NSManagedObject”可能不响应“-setName:”
很明显,某个地方出了问题,我想我在两边都使用了字符串
编辑,在艾曼塔斯的评论之后,我现在使用这个:
NSManagedObjectContext *context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
NSManagedObject *newShot = [NSEntityDescription insertNewObjectForEntityForName:@"shotName" inManagedObjectContext:context];
NSString *newName= @"test";
[newShot setValue:newName forKey:@"shotNumber"];
[context saveAction];
但我还是得到了:
“NSManagedObjectContext”可能不响应“-saveAction”使用
setValue:forKey:
更新
NSManagedObjectContext
具有save
方法,而不是saveAction
。因此:
NSError *error = nil;
[context save:&error]
if (error) {
[NSApp presentError:error];
return;
}
insertNewObjectForEntityForName:@“shotName”
必须是insertNewObjectForEntityForName:@“Shots”
<代码>快照是实体名称shotName
是实体Shots
的属性名称。此外,与Objective-C类名一样,标准做法是为实体对象使用单数名称。因此,Shot
应该是Shot
(推荐,但不是必需的)
此外,如果您更改AppName.xcdatamodel
文件并生成新的NSManagedObject
文件,也可能会出现错误:用于打开应用商店的模型与用于在应用程序启动时创建应用商店的模型不兼容。这是因为它使用的是旧的持久存储文件。我将其命名为:AppName.sqlite
,但您可能对该文件有不同的名称。在项目中搜索以下内容:
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"AppName.sqlite"]];
然后,一旦知道文件名,要查找该文件,请执行以下操作:
find ~/Library/Application\ Support/ -name AppName.sqlite
然后,删除文件,再次构建并运行。感谢您的评论,仍然会收到一个错误(编辑了问题)嗯,这里可能有些可疑,我仍然会收到:“NSManagedObjectContext”可能没有响应“-save”尝试记录上下文变量。可能是其他原因?上下文变量的日志记录似乎正常:但我被以下消息撞坏了:'NSInvalidArgumentException',原因:'-[NSManagedObjectContext saveAction]:未识别的选择器发送到实例0x5bd70'抱歉,我第一次没有查看代码。只是错误。这次我读了代码,我想我找到了解决方案。我更新了答案。谢谢你,这并不是阻止它工作的唯一原因:)