gpt4 book ai didi

core-data - 核心数据 - 可选属性和性能

转载 作者:行者123 更新时间:2023-12-02 21:34:44 25 4
gpt4 key购买 nike

根据核心数据编程指南:

You can specify that an attribute is optional—that is, it is not required to have a value. In general, however, you are discouraged from doing so—especially for numeric values (typically you can get better results using a mandatory attribute with a default value—in the model—of 0). The reason for this is that SQL has special comparison behavior for NULL that is unlike Objective-C's nil. NULL in a database is not the same as 0, and searches for 0 will not match columns with NULL.

我一直将数值设置为非可选,但对于日期和字符串则不然。在我的代码中,将逻辑基于日期和/或字符串为零很方便。

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

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

最佳答案

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

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

关于core-data - 核心数据 - 可选属性和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3401209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com