54

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

4

2 回答 2

53

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

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

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

于 2012-12-11T15:23:02.187 回答
37

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

但是我们也可以只使用正确的标量类型来指定这些属性,例如 as int64_tfloat_tBOOL,并且它将适用于 Core Data。Xcode 甚至在生成器的保存对话框中有一个小复选框NSManagedObject(“为原始数据类型使用标量属性”),它会为您完成此操作。

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

于 2014-04-22T05:48:37.523 回答