【发布时间】:2010-04-20 08:50:40
【问题描述】:
我有一个名为“Job”的实体,它有两个布尔属性,名为“completed”和“logged”。 我正在尝试检索在应用程序启动时尚未记录的所有已完成作业并将它们更改为已记录。我可以通过这个 fetchRequest 获得所有已完成但未记录的作业:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(completed == %@ && logged == %@)", [NSNumber numberWithBool:YES], [NSNumber numberWithBool:NO]];
然后我将此谓词分配给 fetchRequest 并调用 [managedObjectContext executeFetchRequest:fetchRequest] 方法来获取满足此条件的所有 Job 实体的数组。这似乎工作正常,并且返回了正确数量的工作。
我一直在尝试做的是遍历返回的 NSArray,将日志属性设置为 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
}
}
}
感谢期待,
【问题讨论】:
标签: iphone objective-c core-data nsarray