Я запутался в логике основных данных.Основные данные iOS - Почему это работает?
Я обработал основные данные как базу данных, а основные методы данных - как 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
является объектом, который я хочу, чтобы обновить объект основных данных с.
И я обнаружил, что сообщение журнала говорит, что два объекта одинаковы ...
Я принес запрос и ничего не делать, но это работает. Почему это работает?
Я обнаружил, что он работает, когда я использовал только секцию сохранения кода. Я думаю, это потому, что 'theBook' также является результатом извлечения. – glast
Ваш вопрос не совсем понятен. и я не понимаю, почему это не сработает. –
Когда я обрабатываю основные данные как базу данных, я думал, что должен (1) получить объект из запроса выборки и (2) отредактировать значение объекта и (3), а затем сохранить. Но он работает, когда я опускаю процесс (1) и (2). Я не владею английским пользователем, поэтому мне трудно объяснить свой вопрос. Извините :) – glast