核心数据模型设计 - 8个bool或1个NSString?核心数据iOS迅速

时间:2016-01-29 19:10:42

标签: ios core-data database-design

我希望这是提出这类问题的正确论坛。我试图最大限度地减少与iCloud同步的数据量,同时确保理想的应用程序速度......我正在尝试使用高效的模型......我的应用程序(这是一个基本的清单应用程序)将有大约8个变量,可以标记为"拥有"对于每个项目。

将8个属性创建为布尔属性还是单个String属性会更好吗?使用string属性,我只需要包含8个数字,例如" 00000000"或" 10000000"或" 10001000"将字符串的每个字符链接到特定项目,并通过查找字符串的特定索引来检索。

我最初的想法是,8个布尔值将允许更快的阅读和写作,并且占用空间最小,但我将非常感谢来自专家的一些更智能的反馈。

2 个答案:

答案 0 :(得分:0)

我不建议这样做以减少内存使用量。原因是bool花费1个字节--8位(但我们只需要一个,其他7个不会被使用),字符串相同但有字符。如果你想最小化内存使用 - 比使用1个字节。因为1字节 - 8位,您可以使用存储器掩码(位掩码)将每个位设置为1或0。而且你的所有值都将以1字节分配,这将比bool使用8倍的内存。如何使用内存掩码(位掩码)可以阅读本主题

Declaring and checking/comparing (bitmask-)enums in Objective-C

答案 1 :(得分:0)

我认为速度或记忆的差异很可能是微不足道的。以最合乎逻辑的方式设计和编码,乍一看似乎使用了8个布尔值。例如,如果您需要根据布尔值获取数据的子集,那么构造所需的谓词将会容易得多。