У меня есть объект с именем «Job» с двумя логическими атрибутами, который называется «complete» и «logged».
Я пытаюсь восстановить все выполненные задания, которые не были зарегистрированы при запуске приложения, и изменить их на зарегистрированные. Я могу получить все выполненные, но незагруженные задания с этим fetchRequest:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(completed == %@ && logged == %@)", [NSNumber numberWithBool:YES], [NSNumber numberWithBool:NO]];
Затем я назначаю этот предикат fetchRequest и вызываю метод [managedObjectContext executeFetchRequest: fetchRequest], чтобы получить массив всех объектов Job, соответствующих этому критерию. Кажется, это работает нормально и возвращает правильное количество заданий.
То, что я пытался сделать, это перебрать возвращенный NSArray, установить атрибут logged в YES и затем сохранить. Это кажется завершенным и не возвращает никаких ошибок, но изменения не сохраняются при выходе из приложения. Куда я иду не так?
[fetchRequest setPredicate:predicate];
NSError error;
NSArray jobsToLog = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if ([jobsToLog count] > 0) {
for (int i = 0; i < [jobsToLog count] - 1; i++) {
[[jobsToLog objectAtIndex:i] setLogged:[NSNumber numberWithBool:YES]];
// Commit the changes made to disk
error = nil;
if (![managedObjectContext save:&error]) {
// An error occurred
}
}
}
Спасибо в ожидании,