アプリケーションのストレージに 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]);
}
}
私が言ったように、既存のエンティティを新しいものに置き換えたいだけです。どうすればいいですか?