核心数据“使用原始数据types的标量属性”checkbox

什么时候应该在创buildNSManagedObject对象时检查“使用基本数据types的标量属性”?
什么会花费我(我的数据库会提高性能还是更轻量级)?

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

标量属性和非标量属性在DB中由相同的types表示,所以DB的大小将不会发生变化。

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

核心数据支持许多常见的数据types,如整数,浮点数,布尔值等。 但是,默认情况下,数据模型编辑器将这些属性生成为受pipe对象子类中的NSNumber属性。 这通常会导致在应用程序代码中的这些NSNumber对象上产生无穷的floatValueboolValueintegerValue或类似的调用。

但是我们也可以用正确的标量types来指定这些属性,例如int64_tfloat_t或者BOOL ,它们可以和Core Data一起使用。 Xcode甚至在NSManagedObject生成器(“使用基本数据types的标量属性”)的保存对话框中有一个checkbox,它为你做这个。

来源: objc.io – 数据模型和模型对象