gpt4 book ai didi

ios - 在 Realm 中存储时区信息的最有效方法是什么?

转载 作者:行者123 更新时间:2023-11-29 02:01:28 25 4
gpt4 key购买 nike

我有一个包含 NSDate 时间戳的 Realm 对象,表示用户记录某事的时间。我需要为此添加时区信息,以便我知道用户创建对象时的本地时区(以便进行准确的日期格式设置和比较)。

Realm 数据库中会有很多这样的对象(可能每天使用应用程序都会创建其中的几个),但总的来说我认为你不能说它会太大(忙碌的用户可能每年使用应用创建几千个这样的对象)。

看起来最简单的设计是将 timeZoneName 存储为字符串(NSTimeZonename 标识,例如“America/New_York ”)。这将导致每个 Realm 对象重复一个大约 10-20 个字符的字符串。

这只是几个可能的字符串值的大量重复。我应该费心去优化这个吗?例如,有一个单独的 TimeZoneInfo Realm 实体,该实体将具有时区名称的单个属性,并确保每个时区只有一个这样的实体。

澄清

让我提出一个更客观的问题。什么会占用 Realm 数据库中最少的空间?

选项 1:

具有字符串属性的实体,用于存储 NSTimeZone 的 name。此名称值的平均长度为 15 个字符。该实体可以有数千个实例。

选项 2:

EntityA 具有存储 NSTimeZone 的 name 的 String 属性。只会有几个这样的实例(名称是唯一值)。EntityB 引用 EntityA(它具有 EntityA 类型的属性)。 EntityB 的实例可以有数千个。

基本上,是存储数千个字符串还是存储数千个实体引用更高效?

最佳答案

选项 2 将使用更少的空间,但在您的情况下可能不值得关心这种差异。

使用 5000 个条目和选项 1,您将查看 160KB 的字符串数据(对于短字符串,存储大小四舍五入为 2 的幂,以便在每个数据 block 内进行 O(1) 索引),再加上几百字节的数据结构开销。如果存储缩写就足够了,那么您将需要 20KB 左右的字符串数据和类似的开销。使用选项 2,您只需拥有唯一的字符串数据加上每个条目 1 个字节(假设用户不会访问大量时区)。

关于ios - 在 Realm 中存储时区信息的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30326146/

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