1

我收到“无法保存”错误,不。1620,当我尝试以下操作时:

NSManagedObjectContext *context = [self managedObjectContext];

CustomObject *objToInsert = [NSEntityDescription insertNewObjectForEntityForName:@"CustomObject" inManagedObjectContext:context];

objToInsert.variable1 = [NSNumber numberWithFloat:10.0];
objToInsert.variable2 = [NSDate date];
objToInsert.variable3 = [NSNumber numberWithInt:1];

NSError *error;
if (![context save:&error]) {
    NSLog(@"failed to save with error = %@", [error localizedDescription]);
}

在将其他 NSManagedObject 子类对象保存到 managedObjectContext 时,同样的逻辑可以正常工作。1620 错​​误被列为“数字太小”验证错误,但我输入的数字显然没有任何问题。这三个变量在我的数据模型中定义为 Float、Date 和 Integer 16,但我不确定这是否相关。

核心数据堆栈全部存在且正确,正如我所说,与其他插入逻辑一起工作得很好。我在这里错过了什么吗?

编辑:从错误输出中可以看出,Core Data 正在尝试保存一个完全不同的 NSManagedObject 子类,我在执行早期使用它,但在此方法调用中没有。为什么会这样?

4

1 回答 1

3

最后,解决方案部分按照 Martin R 的建议(见评论),但针对一个完全不同的实体。看来,如果为数据模型中的任何其他实体设置了所需的最小值,并且该实体在之前的某个时间点被修改和保存,那么任何后续保存到其他实体都会导致错误。这似乎不明智 - 也许我在其他地方做错了什么?- 但删除最小值要求确实解决了这个特殊问题。

于 2012-10-24T14:06:28.953 回答