如何决定如何使用[Sqlite,Realm,CoreData,用户默认设置,JSON文件]存储iOS数据?

缺口

在到处搜索之后,我发现SQLite,Realm,CoreData,UserDefaults和JSON文件之间没有适当的比较。

您可以轻松找到优点和缺点,但是很难知道该使用什么。

我知道决定完全取决于要求。但是仍然必须有一种决策的方法。

假设出现以下情况,哪种选择最适合个人,为什么?

  1. 保存用户观看的历史记录[大量数据,仅插入和删除操作]
  2. 保存联系电话[最多1000个电话号码,需要快速提取并连续运行]
  3. 保存简单的GET API请求[用于缓存]

注意:我不是在这里存储敏感信息。

随时添加/更新更多相关案例。

维亚切斯拉夫

数据存储实现的大部分只是SQLite包装器。最常见的iOS实现是SQLite,ORM,CoreData,Realm,Keychain。

实现的另一部分只是一个简单的文本。例如,UserDefaults只是一个XML文件,您可以使用简单的iOS API进行编辑。但是当您使用多个元素时,出于性能方面的考虑,SQLite包装器会更加有用。

那么,SQLite包装器呢?

  1. 您可以使用钥匙串,但是它有几个缺点:这不是线程安全的,您只能在允许的应用程序时刻获取数据,它会不时地为现有元素返回错误的结果。这对密码很有用,仅此而已。
  2. CoreData具有本机API,但具有内存泄漏的缺点,API复杂,这不是线程安全的数据库,性能也不佳。
  3. SQLite首先,您可以使用具有11KB依赖关系的本机C库。缺点:旧式C API,原始SQL查询。
  4. SQLite Swift包装器在这种情况下,您必须使用第三方库。但是表现不错。
  5. SQLite ORM这种方式允许使用您的对象,而无需知道实际映射到SQLite表中的对象。易于使用,性能不佳,第三方依赖性。
  6. 境界这确实表现出色且易于使用。但是它在线程安全方面有一个缺点。ORM和Realm之间的区别在于,Realm中的对象没有存储为明显的表,它具有如何将数据转换为表表示形式的魔力。
  7. Firebase数据库我没有在生产中使用此库。它具有在线实施的主要功能。我不确定使用主内部数据库是否正确。

总结呢?

在我们的测试中,SQLite(包装程序,纯C语言)和Realm具有几乎相同的性能。CoreData不够好。

SQLite包装器和Realm具有足够好的API。

唯一的SQLite包装器实际上是线程安全的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何更改默认设置为打开的数据库文件为文本在设备文件浏览器在Android Studio中?

如何将JSX文件默认设置为在Sublime中突出显示Babel文本

如何将丢失数据的高位图默认设置为0

Python / JSON:合并默认设置和用户配置

如何防止某些事件的按键默认设置,然后再次恢复默认设置

如何使用Swift默认设置UILabel字体和大小

如何只存储月份和年份,并将所有日期的天默认设置为1?

用户默认设置中存储的Swift 4键值字典

如何配置RStudio的默认设置?

如何在当前vue默认设置中导入json文件?

如何设置htop的默认设置?

如何更改新用户的默认设置?

如何更改访客会话的默认设置

如何将grep默认设置为某个文件名模式?

如何从默认设置更改Kubuntu背景?

添加新用户时如何更改默认设置?

如何使“黑白”成为默认设置?

在Blender中,如何打开.blend文件并将UI布局还原为默认设置?

如何设置用户的默认.bashrc文件?

如何使用poi jar写入docx文件时默认设置“ Latha”字体

如何将sshd_config文件重置为其默认设置

如何从用户控件访问默认设置?

如何设置默认设置

如何更改Ionic build ios命令的默认设置?

Swift用户默认设置

如何在 19.04 中恢复无人值守升级默认设置和 conf 文件?

如何更改 Ubuntu 的默认设置?

如何为使用 VueJS 启用的开关设置默认设置?

如何在 Intellij idea 中优先使用用户定义的键盘映射而不是默认设置