迁移后,我的一个数值应该为非零,现在显示为零。如果我不迁移,该值将保留其非零值。核心数据迁移失去NSNumber值
我第一次尝试在这样的管理对象设置数值:
[temp setNumUses:temp.numUses+1];
...但造成an'EXC_BAD_ACCESS”,所以我把它改为:
int hold = ((int)[[temp valueForKey:@"numUses"] intValue]);
hold++;
[temp setNumUses:[[NSNumber alloc] initWithInt:hold]];
。 ..但是在迁移之后,这段代码声称hold
在运行新代码之前被初始化为一个值为0的int,它的值明显是1或更多(指的是仅使用1次的测试对象)。
当我不迁移核心数据数据库时,NSNumber通过许多上下文保存和应用程序终止来保留其值。
我可能会丢失什么?我有一些广泛的代码,修改其他地方存储的数据库中更改的NSManagedObjects的值,但不会篡改'numUses'。
想法?
嗨,我想指出,我在Objective-C编程方面相对较新。我在分配之前尝试了NSNumber类的方法,但我想覆盖所有的基础,以确保一切。无论如何还是有NSNumber值为0的问题。有没有关于核心数据迁移模型的任何提示?要在我的代码中迁移数据库,我只需按照指南添加自动迁移,是否有更好的方法/使用该方法修复此问题的简单方法呢? – 2010-09-27 16:36:55
另外,为什么会:[temp setNumUses:temp.numUses + 1];结束工作?我前一段时间编写了该代码,此后已被替换,但在迁移之前它确实有效。是否有操作符方法写入NSNumber?或者这些不存在?谢谢! – 2010-09-27 16:38:26
NSNumber没有操作符方法。你不能只为NSNumber对象添加标量。如果你尝试,你会实际增加对象的地址。我不知道你的移民失败的原因。 – TechZen 2010-09-27 22:13:22