更新就像创建一个新的一样简单。
要更新特定对象,您需要设置一个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 语句中。
有关更多信息,我建议您阅读 Core Data 编程指南和NSFecthRequest
课程参考。
希望能帮助到你。
编辑(可用于更新的片段)
// 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
对上下文执行操作,数据将被更新。