У меня есть объект под названием «Job» с двумя логическими атрибутами с именем «завершено» и «зарегистрирован». Я пытаюсь получить все завершенные задания, которые не были зарегистрированы при запуске приложения, и изменить их для входа в систему. Я в состоянии получить всю завершенную, но Незарегли работу с этим fetchRequest:Изменение управляемых объектов в NSArray
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(completed == %@ && logged == %@)", [NSNumber numberWithBool:YES], [NSNumber numberWithBool:NO]];
Я тогда присваивающим этот предикат к fetchRequest и вызывающему [managedObjectContext executeFetchRequest: fetchRequest] метод, чтобы получить массив все Иова которые соответствуют этим критериям. Это, похоже, работает нормально и возвращает правильное количество рабочих мест.
То, что я пытаюсь сделать, - это преобразовать 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
}
}
}
Благодаря в ожидании,
Большое спасибо! Гораздо более чистый код, чем я был выпущен :) – Garry