我有一个EntityA
,它有一个可选属性int32 result
。当我创建EntityA
时,我没有设置result
属性。然后,当我获取它时,我希望它具有nil
值,但由于某种原因它被设置为3
,即使我没有设置此属性。
这里发生了什么?
答案 0 :(得分:3)
第一个可能的问题:
您已在模型编辑器中设置了默认值。选择属性并检查检查器。
第二个可能的问题:
您正在检索或显示错误的值。显示您正在使用的代码,以找出结果为“3”。
第3个可能的问题:
您将在以后无意中设置该值,可能是在循环或类似的东西中。对文件进行文本搜索以查找代码中可能出现的内容。
答案 1 :(得分:0)
您的int32将被存储为NSNumber对象。如果您不提供值,则不会创建NSNumber对象 - sql会将其视为NULL。
iOS核心数据编程指南说:
您可以指定属性是可选的 - 也就是说,不是 需要有价值。但是,一般来说,你是沮丧的 从这样做 - 特别是对于数值(通常你可以得到 使用带有默认值的强制属性的更好结果 模型 - 0)。原因是SQL有特殊的比较 与Objective-C的nil不同的NULL行为。数据库中为NULL 与0不同,搜索0与列不匹配 空值。
因此,最好使属性成为必需属性并将其设置为不同的值,或者从一开始就传入NSNumber。