我即将开始我的第二个iOS应用程序,我需要存储一些我将在应用程序中提供的列表,但我希望用户能够添加到。以下是要点。
如上所述,我对整个Objective-C& amp; iOS的事情,但我可以找到我的方式在一般意义上的SQL就好了。对此最好的方法是什么?核心数据或MySQL还是其他什么?如何集成交付(通过应用程序商店更新)和本地输入的数据,还是在构建列表时将其保持分离和集成?我还将有一些更持久的设置数据存储,这可能只是少数几个键值对。
性能不需要快速,因为这些选择对于用户来说偶尔会出现。哦,我可以看到通过iCloud同步用户数据可能很有用,但这不是必须的。
答案 0 :(得分:1)
有很多可能的解决方案。
核心数据通常使用SQL作为“后备存储”,因此本质上是核心数据IS SQL。
我们在应用程序商店中有一个应用程序,它在应用程序包中包含一个“启动”SQL数据库,它是我们的核心数据数据库的数据。在启动时,我们检查文档目录中是否存在Core Data数据库的SQL文件。如果没有,我们将文件从包中复制到文档目录中。然后我们将介绍打开Core Data数据库的代码。
然后,用户可以使用该应用程序修改数据库内容,这些更改将保存到文档目录中的读/写文件中。
这种方法可以解决问题的第一部分。然后,您在向应用发送更新时遇到问题。您将需要某种交易系统,或某种方式来跟踪哪些内容是新的以及哪些内容是预先存在的。我猜你可以发布版本1.0数据库和更新的单独数据库文件的应用程序更新。还将“上次启动的版本”记录保存到用户默认值。如果在启动时检测到这是第一次运行新版本,请运行合并过程,该过程会将记录从捆绑包中的更新数据库复制到文档目录中的现有数据库中。 (您可能需要将更新数据库复制到临时目录中,因为我不确定SQL引擎是否可以处理从包中打开只读数据库文件)