我正在编写一个 iphone 应用程序;我需要将数据保存到持久存储中,但我遇到了问题......我在 xcdatamodel 中创建了一个实体,并且我没有问题为我的属性设置默认值。在我的测试中,我多次通过下面的代码,并且可以在应用程序处于活动状态时更改此属性(它是一个整数)。但是,当我关闭并重新打开应用程序时,我的整数 (myInt) 会恢复为默认值,而我预计它是我将其更新为的最后一个值。这是我正在做的事情:
NSManagedObjectContext *managedObjectContext = appDelegate.managedObjectContext;
NSEntityDescription *myTestEntity = [NSEntityDescription
entityForName:@"TestEntity"
inManagedObjectContext:managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:timeStampEntity];
NSError *error = nil;
NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
// TODO: Handle the error
}
for (id oneObject in fetchedObjects)
{
NSInteger myInt = [[oneObject valueForKey:@"myStoredInt"]intValue];
myInt++;
[oneObject setValue:[NSNumber numberWithInt: myInt] forKey:@"myStoredInt"];
NSError *error = nil;
if (![managedObjectContext save:&error]) {//TODO: Handle error
}
}
[fetchRequest release];
我希望那行:
if (![managedObjectContext save:&error])
会完成这项工作并将更改存储到持久存储中,但事实并非如此!(在 for 循环内部或外部有这条线不会改变结果)我做错了什么?
非常感谢您的帮助!