使用 NSFetchedResultsController 更新 CoreData 对象

Update CoreData Objects with NSFetchedResultsController

我制作了一个使用核心数据和获取结果控制器的应用程序。

我可以添加 CoreData 对象,也可以删除它们。现在我想通过获取的结果控制器更新一个 CoreData 对象。我知道我必须获取对象然后才能更改它。但是因为我还在学习,所以我不知道该怎么做。现在想请教一下这个怎么弄?

当您从 CoreData 获取时,如果您修改结果,它会在您保存时更新 CoreData 中的实际值。

您需要先执行提取:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Entity" inManagedObejctContext:moc]];
NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];

// error handling code

获得结果后,您可以修改各个记录...

MyEntity *entity = [results objectAtIndex:0];
entity.title = @"updated attribute";
// save context
[moc save:&error];

编辑:在 swift 中,它将类似于以下内容:

let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
var moc = appDelegate.managedObjectContext!

var fetchRequest = NSFetchRequest()
fetchRequest.entity = NSEntityDescription.entityForName("Entity", inManagedObjectContext: moc)

var error: NSError?
var results = moc.executeFetchRequest(fetchRequest, error: &error)

// error handling code

var entity: MyEntity = MyEntity()
entity.title = "updated attribute"

moc.save(&error)