[英]Core data won't save correctly
我正在使用一个名为设置的数据模型,该模型是在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]];
这将返回我在数据库中设置的默认值。 为什么是这样?
每次再次加载视图时,都会创建一个全新的设置对象:
settings = [NSEntityDescription insertNewObjectForEntityForName:@"Settings" inManagedObjectContext:[self managedObjectContext]];
这将是您的默认值。 相反,您需要获取现有的设置对象,并且仅在不存在的情况下创建一个新的对象。
您的数据库当前将有几个设置对象,每次加载视图时一个对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.