存储iOS应用程序数据的最佳方法?

Ari*_*Ari 0 store ios swift

我希望在学习swift的过程中开发一个库存/项目库存应用程序.它基本上是具有项目名称,数量和位置的东西.

例如.

灯泡,25,工作车

开关,6,仓库

当用户输入该数据,并按下按钮,什么存储该数据,并稍后取回它的最好方法.我知道我可以将它附加到数组并显示数组,但如果应用程序关闭怎么办?

我应该考虑学习数据库存储吗?我可以将数据保存到手机吗?

Cal*_*leb 8

什么是存储此数据并在以后检索它的最佳方法.

最佳方法将取决于一堆的因素,如:

  • 您要保存多少条记录?
  • 您需要将此数据与服务器同步吗?
  • 性能有多重要?
  • 您对使用Swift和iOS存储数据了解多少?
  • 您要保存的数据有多大可能会发生变化?

所有这些问题的答案可能会随着时间的推移而发生变化,因为您可以了解更多并在应用程序上取得更多进展,并可能更多地了解用户的需求.因此,保存数据的最佳方法是构建一些可以让您轻松更改甚至替换数据存储系统的方法,而无需通过应用程序的其余部分进行更改.

换句话说,您需要为数据存储需求定义接口.界面就像一个围栏,一边是实际的数据存储,另一边是应用程序的其余部分(用户界面,网络等).

通过与数据存储系统建立清晰的界面,您可以使用最简单的数据存储系统快速启动并运行应用程序.您可以将数据存储为字典数组,例如,使用Array方法将其全部写入属性列表write(to:atomically:),然后使用init(contentsOf:).到目前为止,你只描述需要一个单一类型的记录,仅具有几个字段的每个记录.将数据存储在数组中并将其写入属性列表将适用于数百甚至数千个条目; 在您真正需要重写数据存储系统之前,您可能需要重新考虑用户界面,因为没有人喜欢滚动浏览数百个项目的列表.

随着您的应用程序的发展,您发现您不想立即将所有数据保存到内存中,或者您希望通过应用程序发送一些数据,并将其与用户输入的数据分开,或者您是要加快您的数据存储,您可以编写符合相同的接口一个新的数据存储系统.然后,您可以交换新系统,而不会影响应用程序的其余部分.因此,您可以切换到使用像Core Data这样的东西,或者您可以实现基于服务器的存储,而无需重写应用程序的大块.

为数据存储系统创建一个清晰的界面还可以轻松编写一组单元测试,以确保您的数据存储系统完全按照预期的方式执行并且不会中断.通过一系列单元测试,可以轻松确保数据存储系统的未来版本与其替换的版本一样正确.


这里的其他人建议使用Core Data.核心数据是伟大的,但使用它是一个很多更复杂的不是从一个文件来读你的数据和写回时,即可大功告成.使用数组存储数据和使用Core Data执行此操作之间的区别非常类似于文本文件和关系数据库之间的区别.核心数据是一个对象图管理器:它可以存储许多不同类型的对象以及它们之间的关系,它可以存储数千个所有这些对象并非常快速地访问它们.当您开始跟踪库存中物品的图像时,每个物品的供应商,购买物品的客户,物品的购买和销售价格等等,核心数据将真正简化管理所有数据的任务.但是现在尝试学习和使用核心数据,虽然您的需求非常简单,而且您也在尝试学习一门新语言,但是如果没有任何实际好处,您将会放慢速度.记住KISS原则并从简单开始,但以一种易于进化的方式.


Aks*_*kur 3

如果您要存储的数据很少且不敏感,您可以使用 UserDefaults 例如,用户的姓名、年龄等。

对于大量数据,您应该使用 Core Data,它是管理对象的一种很好且简单的方法。例如,您有 1000 个项目,每个项目都有一个属性,您基本上可以使用核心数据。如何创建托管对象、存储它们以及如何使用查询检索它们非常简单。

基本上,当您使用核心数据配置项目时,项目会创建一个附加到项目的 sqlite 文件。

有很多关于如何开始使用 Core Data 的教程,如果你对 iOS 有一般的经验,那么这对你来说是小菜一碟。

这是一个很好的教程,可以帮助您在项目中设置核心数据:

https://www.raywenderlich.com/173972/getting-started-with-core-data-tutorial-2