繁体   English   中英

核心数据无法正确保存

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM