在创建NSManagedObject
对象时,我应该何时检查“使用基本数据类型的标量属性”?
它会花多少钱(我的数据库会提高性能还是更轻量级)?
答案 0 :(得分:47)
在iOS 5和OSX 10.7之前,标量属性无法自动生成,您必须添加setter和getter实现,这会导致一些惩罚。自动生成的属性已优化。我不知道有任何其他处罚。
标量和非标量属性在DB中由相同类型表示,因此DB的大小不会发生变化。
您应该根据您访问这些属性的方式选择何时使用标量。例如,如果要将它们添加到集合(NSArray,NSSet,NSDictionary),则需要在cocoa对象中包装标量属性。
答案 1 :(得分:29)
Core Data支持许多常见数据类型,如整数,浮点数,布尔值等。但是,默认情况下,数据模型编辑器会在托管对象子类中将这些属性生成为
NSNumber
属性。这通常会导致对应用程序代码中的这些floatValue
对象进行无休止的boolValue
,integerValue
,NSNumber
或类似调用。但我们也可以用正确的标量类型指定那些属性,例如:作为
int64_t
,float_t
或BOOL
,它将与Core Data一起使用。 Xcode甚至在NSManagedObject
生成器的保存对话框中有一个小复选框(“使用原始数据类型的标量属性”),它可以为您完成此任务。