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