【问题标题】:Core Data - Optional attributes and performance核心数据 - 可选属性和性能
【发布时间】:2010-08-03 22:20:49
【问题描述】:

根据核心数据编程指南:

你可以指定一个属性是 可选——也就是说,它不是必需的 要有一个价值。然而,总的来说, 你不鼓励做 所以——尤其是数值 (通常你可以获得更好的结果 使用强制属性 默认值(在模型中)为 0)。这 原因是 SQL 有 NULL 的特殊比较行为 这与 Objective-C 的 nil 不同。空值 在数据库中不等于0, 并且搜索 0 将不匹配 带有 NULL 的列。

我总是将数值设为非可选,但对于日期和字符串却没有。在我的代码中,将逻辑基于日期和/或字符串为零是很方便的。

基于上述建议,我正在考虑将数据库中的所有内容设为非可选。对于日期,我可以将模型默认值设置为 0,对于字符串,模型默认值为空(“”)。然后,在我的代码中,我可以测试 [date timeIntervalSince1970] != 0 的日期和 string.length != 0 的字符串。

问题是,对于一个相对较小的数据库,从 Core Data 性能的角度来看,这真的很重要吗?如果所讨论的属性永远不会通过谓词直接查询,那么权衡是什么?

【问题讨论】:

    标签: core-data optimization


    【解决方案1】:

    我在中小型数据集上没有发现任何性能问题。我怀疑这是您在应用程序的性能阶段会处理的事情。

    就我个人而言,如果有意义的话,我会使用相同的逻辑,即非数字是可选的,因为它确实使代码更容易,这反过来又让我有更多时间在以后进行优化。

    【讨论】:

    • 非常感谢马库斯!我希望你能回答这个问题。来自经过认证的 Core Data 忍者让我有信心将这个问题抛在脑后。
    • 如果 Marcus 真的是 Core Data 忍者,那么我们将永远见不到他……除非他希望我们这么想。忍者是狡猾的恶魔。
    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2013-07-30
    • 2010-11-05
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    相关资源
    最近更新 更多