我对核心数据的逻辑感到困惑。
我将核心数据视为数据库,将核心数据方法视为 SQL 查询。
当我尝试使用本地内存的对象更新核心数据中的某些对象时,我发现我可以使用以下代码来制作该功能:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Book" inManagedObjectContext:_managedObjectContext]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"identifier == %@", theBook.identifier];
[request setPredicate:predicate];
NSError *error;
Book *book = [[_managedObjectContext executeFetchRequest:request error:&error] lastObject];
if (error) {
NSLog(@"Error getting book to update: %@", error);
abort();
}
// NSLog(@"%d", book == theBook);
error = nil;
if (![_managedObjectContext save:&error]) {
NSLog(@"Error saving the book: %@", error);
abort();
}
theBook
是我想用来更新核心数据对象的对象。
我发现日志消息说这两个对象是相同的......
我获取了请求并没有做任何事情,但它确实有效。为什么它有效?