使用NSPredicate覆盖核心数据信息

时间:2012-11-30 15:40:28

标签: iphone objective-c ios

我正在尝试使用NSPredicate编辑Core Data条目中的条目,但我不确定它是如何工作的。

我正在尝试根据另一个对象的id获取一个实体,但我无法看到我出错的地方。这是我的数据模型: 实体:myEntity,Attributes: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 个答案:

答案 0 :(得分:0)

案件结案的家伙。我的愚蠢错误。我非常专注于使核心数据的新部分工作(我发现它令人生畏),我实际上忘了分配self.itemToEdit.value。抱歉浪费你的时间。

麦克