代码之家  ›  专栏  ›  技术社区  ›  Ari

存储iOS应用程序数据的最佳方法?[关闭]

  •  0
  • Ari  · 技术社区  · 6 年前

    在学习swift的过程中,我想开发一个库存/物品库存应用程序。它基本上是一些有,物品名称,数量和位置的东西。

    如。

    灯泡,25,工作车

    开关,6,仓库

    当用户输入这些数据并按下按钮时,存储这些数据并在以后检索它的最佳方法是什么。我知道我可以将其附加到一个数组并显示该数组,但是如果应用程序关闭了呢?

    我应该看看学习数据库存储吗?我能把数据保存到手机上吗?

    5 回复  |  直到 6 年前
        1
  •  1
  •   Akshansh Thakur    6 年前

    如果要存储的数据非常少且不敏感,则可以使用用户默认值 例如,用户名、年龄等。

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

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

    有很多关于如何开始使用核心数据的教程,如果你对ios有着一般的经验,那对你来说是小菜一碟。

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

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

        2
  •  7
  •   Caleb    6 年前

    存储这些数据并在以后检索它们的最佳方法是什么。

    这个 最好的 方法取决于一系列因素,如:

    • 要保存多少条记录?
    • 是否需要将此数据与服务器同步?
    • 表现有多重要?
    • 您对使用swift和ios存储数据了解多少?
    • 要保存的数据更改的可能性有多大?

    所有这些问题的答案可能会随着时间的推移而改变, 当你在应用程序上学习更多,取得更多进展,也许你会更了解用户的需求。所以 最好的 保存数据的方法是构建一些东西,使您可以轻松地更改甚至替换数据存储系统,而无需通过应用程序的其余部分进行更改。

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

    有一个清晰的界面到你的数据存储系统,将让你得到你的应用程序,运行与最简单的数据存储系统,可能会工作迅速。可以将数据存储为字典数组,例如,使用array方法将其全部写入属性列表 write(to:atomically:) ,并使用 init(contentsOf:) 是的。到目前为止,您只描述了对一种记录的需求,每个记录只有几个字段。将数据存储在一个数组中并将其写入属性列表可以处理成百上千个条目;在真正需要重写数据存储系统之前,您可能需要重新考虑用户界面,因为没有人喜欢滚动成百上千个条目的列表。

    随着应用程序的发展,你发现你不想一次将所有数据保存到内存中,或者你想随应用程序一起传送一些数据,并将这些数据与用户输入的数据分开,或者你想加快数据存储速度,你可以编写一个符合同一界面的新数据存储系统。然后,您可以在不影响应用程序其余部分的情况下交换新系统。所以你可以改用一些新奇的东西,比如核心数据,或者你可以实现基于服务器的存储,而不必重写你的应用程序的大块。

    为您的数据存储系统创建一个清晰的接口还可以方便地编写一组单元测试,以确保您的数据存储系统能够正确地执行它应该执行的操作并且不会中断。并且有一组单元测试可以很容易地确保数据存储系统的未来版本与它所替代的版本一样正确。


    这里有些人建议使用核心数据。 核心数据很棒,但是使用它 许多 更复杂 不仅仅是从文件中读取数据并在完成后将其写回。使用数组存储数据和使用核心数据存储数据之间的区别非常类似于文本文件和关系数据库之间的区别。核心数据是一个对象图管理器:它可以存储许多不同类型的对象以及它们之间的关系,它可以存储成千上万个这些对象并快速访问它们。当你开始跟踪库存中商品的图像、每个商品的供应商、购买商品的客户、商品的价格等等,核心数据将真正简化管理所有这些数据的任务。但是,现在尝试学习和使用核心数据,虽然你的需求非常简单,而且你也在尝试学习一门新语言,但会让你慢下来,没有任何真正的好处。记住 KISS principle 一开始很简单,但在某种程度上,它很容易进化。

        3
  •  2
  •   Ruchira Randana    6 年前

    根据您的具体要求,您可以使用以下任一方法。

    1. 核心数据:你可以找到一个教程 here 是的。
    2. 使用sqlite数据库:您可以找到一个教程 here 是的。
    3. 如果它很简单,不需要存储很多信息,那么您甚至可以使用文件系统来存储数据。即使是层裂也是可能的。
        4
  •  1
  •   rmaddy    6 年前

    对于一个刚刚登录的用户,您可以将其存储在 UserDefaults 是的。但如果必须管理用户列表,则使用核心数据。

        5
  •  0
  •   Antiokhos    6 年前

    这两者有很大的区别。 sqllite公司 是一个数据库本身,就像我们有ms sql server一样。

    然而 核心数据 是一个orm(对象关系模型),它在数据库和ui之间创建一个层。它加速了相互作用的过程 因为我们不必编写查询 ,只需使用orm并让orm处理后端。对于大数据的存储或检索,我建议使用核心数据,因为它能够处理设备处理速度较低的数据。

    因此:

    数据库 以下内容:

    • 具有数据约束功能。
    • 对存储在磁盘上的数据进行操作。
    • 可以删除表并编辑数据,而无需将它们加载到内存中。
    • 与核心数据相比速度慢。
    • 对于复杂的数据结构,可以使用sql

    核心数据:

    • 如果需要按业务实现,则不具有数据约束 逻辑。

    • 在内存中操作。(数据需要从磁盘加载到内存)

    • 如果需要删除表或更新,则需要加载整个数据。

    • 在创建记录方面很快(保存它们可能很费时)

    • 没有用于此的SQL。只需将数据加载到数组并在该数组中使用。

    在我看来,如果你需要几个数据,你的应用的设置,或用户认证信息或类似的作品使用coredata

    如果要存储大数据,则需要选择使用sqllite的多个数据记录之一。

    希望有帮助。