在到处搜索之后,我发现SQLite、Realm、CoreData、UserDefaults和JSON文件之间没有更好的比较。
你可以很容易地找到优点和缺点,但很难知道该用什么。
我知道决定完全取决于要求,但仍然必须有一个方法来作出决定。
假设以下情况,哪些选项对个人最好,为什么?
1.保存用户关注的历史记录[数据量巨大,仅插入和删除操作]
1.保存联系人号码[最多1000个号码,需要快速获取,并持续运行]
1.保存简单GET API请求[用于缓存]
注意:我在这里不是说存储敏感信息。
请随时添加/更新更多相关案例。
4条答案
按热度按时间wrrgggsh1#
数据存储实现的大部分只是SQLite Package 器,最常见的iOS实现是SQLite、ORM、CoreData、Realm、Keychain。
实现的另一部分只是一个简单的文本。例如,UserDefaults只是一个XML文件,您可以使用简单的iOS API对其进行编辑。但是,当您处理超过几十个元素时,SQLite Package 器在性能方面更有用。
那么,SQLite Package 器呢?
1.您可以使用Keychain,但它有几个缺点:这不是一个线程安全的,你只能在应用程序允许的时刻获取数据,有时它会返回不正确的结果。这对密码有用,仅此而已。
总结怎么样?
在我们的测试中,SQLite(Wrapper,纯C)和Realm的性能几乎相同,CoreData还不够好。
SQLite Package 器和Realm有足够好的API。
唯一的SQLite Package 器是真正线程安全的。
6pp0gazn2#
在iOS中保存数据的可用选项。
**用户默认值:**Quicky保留少量数据。
**可编码(NSCoder):**用于保存自定义对象。
**钥匙串:**保护少量数据。
**SQLite:**持久化大数据,但需要查询操作。
**核心数据:**面向对象数据库。
**领域:**更快、更简单的数据库解决方案。
CoreData、Sqlite和Realm在存储中存储纯文本如果您不告诉它加密,您可以使用加密来确保安全。
***保存用户关注的历史记录[数据量巨大,仅插入和删除操作]**应使用Coredata & Realm。
***保存联系人号码[最多1000个号码,需要快速提取和连续操作]**应使用Coredata & Realm。
***保存简单GET API请求[用于缓存]**应使用可编码、核心数据和领域。响应可用于脱机存储。
tnkciper3#
数据存储和缓存非常重要的主题。选择存储数据的方式可以依赖于整个应用程序的设计。
缓存:
NSCoding
协议。持久性:
总结如下:
简单记录:* * 用户默认值**,NSCoding
本地数据存储,复杂记录:* * 核心数据**(雅浦,领域)
同步:* * CouchDB**、Yap(iCloud)、核心数据(iCloud-)、领域(付费)、Firebase(付费)
速度:狂吠,领域
平台或基于云:* * 防火墙**、解析
跨平台:* * 领域**、沙发数据库、蒙古数据库、防火墙
7vhp5slm4#
我个人的看法如下:
*核心数据:来自苹果的良好支持,原生,可视化编辑器,对于大多数用例都有良好的性能,但在我看来有一个相当不舒服的API。
*Realm:简单的API,令人难以置信的速度,轻松的迁移。但是就我个人而言,线程的问题让我很困扰。使用Realm处理线程很困难,也很烦人。对于其他方面,我觉得很棒。另外,它也增加了应用程序的大小,但这是值得的。
如果你问我个人,我喜欢Realm,我也经常使用Core Data,但最终还是坚持使用Realm。