2012-05-27 104 views
2

我有一个EntityA,它有一个可选属性int32 result。当我创建EntityA时,我没有设置result属性。然后,当我获取它时,我期望它具有nil值,但由于某种原因,它设置为3,即使我没有设置此属性。核心数据 - 具有可选属性的获取对象

这是怎么回事?

回答

3

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

第二可能的问题:
您检索或显示错误的值。显示你正在使用的代码来找出结果是'3'。

3日可能问题:
你设定值后不经意间,也许是在一个循环或类似的东西。对属性进行文本搜索以在您的代码中查找可能的事件。

+0

太好了。默认保存了我。谢谢! –

0

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

iOS的核心数据编程指南说:

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

因此,将属性设置为强制性并将其设置为不同的值或从头开始传入NSNumber可能会更好。

相关问题