我在我的应用程序中使用 Core Data 进行存储,并且在应用程序中,有时我的“实体”会被修改(例如地址、城市、职位名称)。
我不想更新实体的特定属性,而是想通过创建一个方法来简化该过程,在该方法中,我将存储中的现有实体替换为同一实体的较新版本(没什么花哨的)。在我的方法中,我认为我必须获取所需的实体,但我该如何进行替换呢?这就是我感到困惑的地方。
这是我的相关代码:
-(void)updateUser:(User *)user {
// Create fetch request
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:_managedObjectContext];
[fetchRequest setEntity:entity];
// Create predicate
NSPredicate *pred = [NSPredicate predicateWithFormat:@"userid == %@", user.userid];
[fetchRequest setPredicate:pred];
// Create fetched results controller
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:_managedObjectContext sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = (id)self;
//what do I do next?
NSError *error;
if (![_managedObjectContext save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
}
正如我所说,我只是想用新的实体替换现有的实体。我该怎么做呢?