最快的 iOS 应用数据存储

Posted

技术标签:

【中文标题】最快的 iOS 应用数据存储【英文标题】:Quickest datastore for iOS app 【发布时间】:2015-02-17 05:05:45 【问题描述】:

我需要一个在应用关闭/打开之间持续存在的数据存储。对于这个简单的项目来说,实现数据库过于复杂和耗时。

这是一个非常简单的表格列表应用程序,它的输入表单不超过四个字段。该数据将显示在表格中。

在 plist 文件和 Core Data 之间,哪种方法最有效?

【问题讨论】:

如果您不需要索引,那么纯文本文件怎么样? FWIW,Dobbs 博士似乎推荐 SQLite:drdobbs.com/mobile/ios-data-storage-core-data-vs-sqlite/… 就像我说的,数据库太复杂了。对于文本文件或 plist,您必须滚动所有内容。我正在学习 Core Data,因为它已经构建了很多。我只是从未使用过它,所以我不完全确定它是否会比文本文件或 plist 更快。 What are some advantages of using Core Data? (as opposed to plist)的可能重复 @Bluehound:不。你没有阅读问题。核心数据只是问题的一部分。 plist 是另一个,如下所示,NSUserDefaults 可能是解决方案。所以不确定你试图强迫答案是核心数据。 【参考方案1】:

NSUserDefaults 怎么样?

var userDefaults = NSUserDefaults.standardUserDefaults()

保存数据:

userDefaults.setValue(yourObject, forKey: "yourKey")

或:

userDefaults.setObject(yourObject, forKey: "yourKey")

保存新数据后,别忘了调用:

userDefaults.synchronize()

加载保存的数据(在应用关闭等之后):

var yourObject = userDefaults.valueForKey("yourKey")

var yourObject = userDefaults.objectForKey("yourKey")

【讨论】:

我要存储整个数组吗?如果我尝试存储每个表的数据价值,我认为这不会很好。所有这些数据都将存储在一个数组中,并且管理数组的存储似乎是最简单的。【参考方案2】:

查看糖记录。它是 Core Data 的一个很好的包装器,它真正简化了事情,易于启动和运行,并且大多数事情都可以通过几行代码来完成。

https://github.com/SugarRecord/SugarRecord

【讨论】:

【参考方案3】:

使用 plist 文件的最大优点可能是简单。然而,如果你有很多数据,想在表格视图中优雅地组织它,或者基本上想做任何更高端的事情,Core Data 为这些事情提供了强大的功能,并且在内存管理方面做得更好。一个使用 tableview 组织数据的简单表格列表应用程序,我建议使用 Core Data,因为它的 NSFetchedResultsController 类只加载必要的数据,并且在修改托管对象上下文时具有有用的委托方法。 有关NSFetchedResultsController 的完整实现,请参阅此GitHub Project。

【讨论】:

以上是关于最快的 iOS 应用数据存储的主要内容,如果未能解决你的问题,请参考以下文章

一个迄今为止最快的并发键值存储库FASTER诞生

索引碎片的检测和整理

循环存储和保存坐标数据的最快方法

从文本文件加载数据然后将其存储到数据库中的最快方法

rabbitMQ想最快的往队列中存放9千万条数据怎么弄

全球增长最快的对象存储开源服务MinIO