不能承诺coredata

时间:2014-05-29 04:01:03

标签: ios core-data nsmanagedobjectcontext

我试图更新我的coredata实体,但我无法确定如何提交更改。

我从桌面视图中传递了一个NSManagedobjectcontext对象,并使用它在下一个屏幕上显示信息。

我的问题是我所做的任何改变都不会提交。我无法锻炼如何将传递的对象与核心数据联系起来。如果我不能这样做我如何选择正确的实体条目?有没有找到关键的coredata使用?

由于

这是代码

NSFetchRequest *request = [[NSFetchRequest alloc] init];
self.fetchedResultsController = [self fetchedResultsController];
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:self.managedObjectContext];

[request setEntity:[NSEntityDescription insertNewObjectForEntityForName:@"Contact" inManagedObjectContext:context]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"sites == %@", results];

[request setPredicate:predicate];
Contact *writeobject = [context executeFetchRequest:request error: nil];

我现在收到错误[联系人姓名]未经识别的选择人员发送到实例

1 个答案:

答案 0 :(得分:2)

这一行:

[request setEntity:[NSEntityDescription insertNewObjectForEntityForName:@"Contact" inManagedObjectContext:context]];

错误是因为您应该设置获取请求的实体,而您实际正在做的是创建一个新的托管对象实例,将其插入上下文并将其设置为实体 - 它不是&#39 ;吨。因此,您第一次使用时会遇到异常。

更改您的代码以删除该行,并使用实体名称创建获取请求:

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Contact"];