更新就像创建一个新的一样简单.
要更新特定对象,需要设置NSFetchRequest
.此类相当于SQL语言中的SELECT语句.
这里有一个简单的例子:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Favorits" inManagedObjectContext:moc]];
NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];
// error handling code
数组results
包含sqlite文件中包含的所有托管对象.如果想要获取特定对象(或多个对象),则需要在该请求中使用谓词.例如:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title == %@", @"Some Title"];
[request setPredicate:predicate];
在本例中,results
包含title等于Some Title
的对象.设置谓词等于将WHERE子句放入SQL语句中.
要了解更多信息,我建议您阅读核心数据编程指南和NSFecthRequest
类参考资料.
希望有帮助.
EDIT(可用于更新的代码段)
// maybe some check before, to be sure results is not empty
Favorits* favoritsGrabbed = [results objectAtIndex:0];
favoritsGrabbed.title = @"My Title";
// save here the context
或者如果您没有使用NSManagedObject
子类.
// maybe some check before, to be sure results is not empty
NSManagedObject* favoritsGrabbed = [results objectAtIndex:0];
[favoritsGrabbed setValue:@"My title" forKey:@"title"];
// save here the context
在这两种情况下,如果对上下文执行save
,数据将被更新.