【问题标题】:Core Data "use scalar properties for primitive data types" check box核心数据“使用原始数据类型的标量属性”复选框
【发布时间】:2012-11-28 23:38:23
【问题描述】:

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

【问题讨论】:

    标签: objective-c core-data


    【解决方案1】:

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

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

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

    【讨论】:

    • 另外我猜使用对象而不是标量会给你一个额外的状态:nil
    【解决方案2】:

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

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

    来源:objc.io - Data Models and Model Objects

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多