我正在尝试使用 NSPredicate 编辑核心数据条目中的条目,但我不完全确定它是如何工作的。
我正在尝试根据来自另一个对象的 id 获取实体,但我看不出我哪里出错了。这是我的有效数据模型:实体:myEntity,属性:名称、id、值。
我正在尝试通过以下方式在数据库中检索正确的对象:
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 类型,它是另一个对象,但分配类型是相同的。
问候,
迈克