核心数据“使用原始数据类型的标量属性”复选框

时间:2012-12-11 11:56:55

标签: objective-c core-data

在创建NSManagedObject对象时,我应该何时检查“使用基本数据类型的标量属性”?
它会花多少钱(我的数据库会提高性能还是更轻量级)?

2 个答案:

答案 0 :(得分:47)

在iOS 5和OSX 10.7之前,标量属性无法自动生成,您必须添加setter和getter实现,这会导致一些惩罚。自动生成的属性已优化。我不知道有任何其他处罚。

标量和非标量属性在DB中由相同类型表示,因此DB的大小不会发生变化。

您应该根据您访问这些属性的方式选择何时使用标量。例如,如果要将它们添加到集合(NSArray,NSSet,NSDictionary),则需要在cocoa对象中包装标量属性。

答案 1 :(得分:29)

  

Core Data支持许多常见数据类型,如整数,浮点数,布尔值等。但是,默认情况下,数据模型编辑器会在托管对象子类中将这些属性生成为NSNumber属性。这通常会导致对应用程序代码中的这些floatValue对象进行无休止的boolValueintegerValueNSNumber或类似调用。

     

但我们也可以用正确的标量类型指定那些属性,例如:作为int64_tfloat_tBOOL,它将与Core Data一起使用。 Xcode甚至在NSManagedObject生成器的保存对话框中有一个小复选框(“使用原始数据类型的标量属性”),它可以为您完成此任务。

来源:objc.io - Data Models and Model Objects