2

我有EntityA一个可选属性 int32 result。当我创建时,EntityA我没有设置result属性。然后稍后当我获取它时,我希望它具有nil价值,但由于某种原因,3即使我没有设置此属性,它也被设置为。

这里发生了什么?

4

2 回答 2

3

第一个可能的问题:
您在模型编辑器中设置了默认值。选择属性并检查检查器。

第二个可能的问题:
您正在检索或显示错误的值。显示您正在使用的代码以找出结果为“3”。

第三个可能的问题:
您稍后无意中设置了值,可能是在循环或类似的情况下。对属性进行文本搜索以查找代码中可能出现的情况。

于 2012-05-27T10:13:09.770 回答
0

您的 int32 将存储在一个 NSNumber 对象中。如果您不提供值,则不会创建 NSNumber 对象 - sql 会将其视为 NULL。

iOS 核心数据编程指南说:

您可以指定一个属性是可选的——也就是说,它不需要有一个值。但是,通常不鼓励您这样做,尤其是对于数值(通常,您可以使用具有默认值(在模型中)为 0 的强制属性获得更好的结果)。原因是 SQL 对 NULL 有特殊的比较行为,这与 Objective-C 的 nil 不同。数据库中的 NULL 与 0 不同,搜索 0 将不会匹配具有 NULL 的列。

因此,最好将属性设为强制并将其设置为不同的值,或者从一开始就传入 NSNumber。

于 2012-05-27T09:52:56.303 回答