将数据库下载到iOS设备的最佳方法

时间:2011-12-04 18:07:18

标签: iphone ios ipad sqlite core-data

是的,关于此主题在SO上有很多问题,但我找不到令人满意的答案。

我正和一些人一起做一个小项目。我们的想法是将一些数据添加到数据库中,以后可以在应用程序中使用。数据库只能在设备上读取(选择语句),而不会被用户编辑。

其中两个人应该为数据库提供食物。我创建了一个他们可以登录的网页,并根据需要添加/更新/删除数据。网页用php编写,数据使用sqlite存储在数据库中。

应该可以在应用中进行搜索即搜索。

数据库将每隔一段时间更新一次。当发生这种情况时,我想更新设备上的本地数据库,但只更新已更改的部分。这是首选方法,但只需下载完整的数据库即可。这取决于数据库以后的大小。

我需要一些关于下一步的指导。一些重要问题:

  1. sqlite是这个数据库的最佳选择吗?如果那是首选,我可以在没有太多工作的情况下将其更改为mysql。还是有另一种更好的解决方案吗?
  2. 如何将数据保存到设备,以及如何使用它?这有什么好的框架吗?我只需要在设备上做一些简单的select语句。
  3. 我应该在我的解决方案中使用这些吗?
    • 核心数据:我还不熟悉它,但似乎使用它需要做很多工作。 (?)
    • JSON / REST:我应该将数据作为JSON / REST发送吗?我见过RESTkit,但我还没有用过。
  4. 还有什么我应该知道的吗?
  5. 那么..这里最好的方法是什么?我完全不确定接下来要做什么。我们将非常感谢对有用资源的一些解释和/或参考。

3 个答案:

答案 0 :(得分:0)

这取决于。如果数据集很大,我会选择CoreData。如果它很小,简单的NSArray / NSDictionary会更容易。至于转移,我会使用简单的PLIST或JSON。一切都取决于您的需求和时间,您希望投资于您的项目。

答案 1 :(得分:0)

  1. 关于这个项目,我认为你在谈论服务器数据库,如果我错了,请纠正我。我更喜欢在服务器上使用MySQL,因为它比SQLite更强大。

  2. 您可以直接在设备上使用SQLite或使用CoreData。在这两种方式中,您将在设备上拥有SQLite数据库。不同之处在于您访问它的方式。要直接访问SQLite,您可以使用SQLite C API(libsqlite3.0.dylib)。 CoreData也非常好,但它需要比SQLite C API更多的学习时间。

  3. 使用JSON与您的Web服务进行通信非常容易。 PHP有一个非常好的JSON支持,在设备上你可以使用TouchJSON(https://github.com/TouchCode/TouchJSON

  4. 我不知道。 :)

  5. 希望它有所帮助。

答案 2 :(得分:0)

1.  Is sqlite the best choice of database for this? I could change it to mysql without too much work, if that's preferred. Or is there another, better solution?

是的Sqlite更好

1.  How do I save the data to the device, and how do I use it? Are there any good frameworks for this? I only need to do some simple select-statements on the device.

NSFileManager是您需要使用的,首先,您需要从服务器请求sqlite数据库,将整个数据库下载到App中的文档文件夹

1.  Should I use any of these in my solution?
•   Core Data: I'm not familiar with it yet, but it seems like it is a lot of work to use it. (?)

在概念上它有点宽泛,虽然它使用sqlite,你不需要将数据从设备添加到数据库,这对你来说是不可取的。

•   JSON/REST: Should I send data as JSON/REST? I've seen the RESTkit, but I haven't used it.

您可以使用JSON下载数据。

1.  Is there anything else I should know about?

您在服务器中准备的sqlite数据库应该具有相同的表名和结构,以便可以执行您的设备查询,

相关问题