核心数据“使用原始数据types的标量属性”checkbox
什么时候应该在创buildNSManagedObject
对象时检查“使用基本数据types的标量属性”?
什么会花费我(我的数据库会提高性能还是更轻量级)?
在iOS 5和OSX 10.7标量属性不能自动生成之前,必须添加setter和getter实现,这会导致一些惩罚。 自动生成的属性进行了优化。 我不知道有任何其他处罚。
标量属性和非标量属性在DB中由相同的types表示,所以DB的大小将不会发生变化。
您应该select何时使用标量,具体取决于您要访问这些属性的方式。 例如,如果要将它们添加到集合(NSArray,NSSet,NSDictionary)中,您将需要在cocoa对象中包装标量属性。
核心数据支持许多常见的数据types,如整数,浮点数,布尔值等。 但是,默认情况下,数据模型编辑器将这些属性生成为受pipe对象子类中的
NSNumber
属性。 这通常会导致在应用程序代码中的这些NSNumber
对象上产生无穷的floatValue
,boolValue
,integerValue
或类似的调用。但是我们也可以用正确的标量types来指定这些属性,例如
int64_t
,float_t
或者BOOL
,它们可以和Core Data一起使用。 Xcode甚至在NSManagedObject
生成器(“使用基本数据types的标量属性”)的保存对话框中有一个checkbox,它为你做这个。
来源: objc.io – 数据模型和模型对象