核心数据:在自动生成的实体类中使用布尔值

时间:2013-10-08 15:48:42

标签: objective-c core-data

核心数据已自动生成我NSManagedObject的子类。我的实体包含名为 isActive 布尔。当自动生成子类时,此属性的类型为NSNumber。由于这是一个布尔值,我必须编写如下代码:

if ([myEntity.isActive boolValue])
我认为我非常奇怪。解决这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

没有什么可以解决,真的,这是正常的,并按预期工作。

如果您不喜欢它,请选中标记为"使用标量属性作为原始数据类型的框#34;在生成子类时。然后,布尔属性将生成为BOOL,因此无法在其上调用boolValue

当您这样做时,您还会提到最终为NSTimeInterval的日期属性。我同意,这很烦人。但是:你可以混合和匹配标量和对象属性。生成步骤没有任何魔力,你看到的代码就是它的全部内容。因此,使用标量属性生成,为您提供:

@property (nonatomic) NSTimeInterval myDate;

然后只需编辑该行,如下所示:

@property (nonatomic, retain) NSDate * created;

但请原样保留isActive财产。 Voila,标量访问一个属性,但对象式访问另一个属性。

答案 1 :(得分:1)

使用“Create NSManagedObject Subclass”选项生成子类时,必须取消选中“使用基本数据类型的标量属性”复选框。