2012-11-30 47 views
0

我试图使用NSPredicate编辑核心数据条目中的条目,但我不完全确定它是如何工作的。使用NSPredicate覆盖核心数据信息

我想从另一个对象得到一个基于ID的实体,但我看不到我要去哪里错了。这里是我的数据模型: 实体:myEntity,属性:name,id,value。

我试图通过检索该数据库中的正确的对象:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"myEntity" inManagedObjectContext:self.managedObjectContext]; 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    [request setEntity:entity]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %@", self.itemToEdit.ID]; 
    [request setPredicate:predicate]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
    [request setSortDescriptors:sortDescriptors]; 

    NSError *error; 

    MyEntity *myEntity = [[self.managedObjectContext executeFetchRequest:request error:&error] objectAtIndex: 0]; 
    myEntity.value = self.itemToEdit.anotherValue; 

    [self.managedObjectContext save:&error]; 

无论出于何种原因,该数据没有被保存,应用程序不会崩溃或者这使我相信问题与谓词有关。无论如何,代码有什么问题?注意,itemToEdit不是myEntity类型,它是另一个对象,但赋值类型相同。

的问候,
迈克

+1

您是否检查过谓词中的“id”是否正确?我看到你的'itemToEdit'对象上有一个大写的'ID'属性。另外,在调用'executeFetchRequest:error:'或'save:'时,检查你的'error'对象是否有问题。 – colincameron

+0

感谢您的回复。两者的错误均为空。此外,再次检查案件,这是正确的。 – Mackey18

回答

0

结案的家伙。我愚蠢的错误。我非常专注于使Core Data工作的这个新部分(我觉得这很令人生畏),我实际上忘记了指定self.itemToEdit.value。对不起,浪费你的时间。

Mike

+0

很高兴它已修复。我只是重新键入整个方法,包括在任务之前和之后的nslogs。你可以标记你自己的答案是否正确。 (它可能仍然有助于某人调试自己的问题)。 – danh

+0

谢谢丹,抱歉浪费你的时间。 – Mackey18