我正在使用一个名为settings的数据模型,我在viewController的didLoad中设置:
settings = [NSEntityDescription insertNewObjectForEntityForName:@"Settings" inManagedObjectContext:[self managedObjectContext]];
继承了managedobjectContext方法:
- (NSManagedObjectContext *)managedObjectContext {
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}
当我的步进器递增时,我想更新一个字符串,然后更新数据库。
- (IBAction)RowStepperAction:(UIStepper *)sender
{
double value = [sender value];
settings.numberofrows = [NSNumber numberWithDouble:value];
[self.RowNumber setText:[NSString stringWithFormat:@"%d", (int)value]];
NSError *error = nil;
// Save the object to persistent store
if (![[self managedObjectContext] save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
}
当我再次加载视图时,我会这样做:
[self.ColumnStepper setValue:[settings.numberofcolumns doubleValue]];
[self.RowStepper setValue:[settings.numberofrows doubleValue]];
这将返回我在数据库中设置的默认值。这是为什么?
答案 0 :(得分:2)
每次再次加载视图时,您都会创建一个全新的设置对象:
settings = [NSEntityDescription insertNewObjectForEntityForName:@"Settings" inManagedObjectContext:[self managedObjectContext]];
这将具有您的默认值。您需要获取现有的设置对象,并且只创建一个新对象(如果不存在)。
您的数据库当前有几个设置对象,每次加载视图时都有一个。