【问题标题】:Core Data Model design - 8 bools or 1 NSString? Core Data iOS swift核心数据模型设计 - 8 个布尔值或 1 个 NSString?核心数据 iOS swift
【发布时间】:2016-01-29 19:10:41
【问题描述】:

我希望这是提出此类问题的合适论坛。我正在尝试尽量减少与 iCloud 同步的数据量,同时确保理想的应用程序速度……我正在尝试使用高效的模型……我的应用程序(这是一个基本的清单应用程序)将有8 个变量,每个项目都可以标记为“拥有”。

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

我最初的想法是 8 个布尔值可以加快读写速度,并且占用空间最小,但我希望专家提供一些更明智的反馈。

【问题讨论】:

  • NS_OPTIONS 和普通的 NSInteger 怎么样?

标签: ios core-data database-design


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-09-12
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-09
      • 1970-01-01
      相关资源
      最近更新 更多