【问题标题】:Best approach to download a database to an iOS device将数据库下载到 iOS 设备的最佳方法
【发布时间】:2012-01-12 17:28:46
【问题描述】:

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

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

其中两个人应该负责数据库的馈送。我制作了一个网页,他们可以在其中登录,并根据需要添加/更新/删除数据。网页用php编写,数据使用sqlite存储在数据库中。

应该可以在应用程序中进行边输入边搜索。

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

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

  1. sqlite 是最好的数据库选择吗?如果愿意,我可以将其更改为 mysql 而无需太多工作。还是有其他更好的解决方案?
  2. 如何将数据保存到设备中,如何使用?有什么好的框架吗?我只需要在设备上做一些简单的选择语句。
  3. 我应该在我的解决方案中使用这些吗?
    • Core Data:我对它还不熟悉,但使用它似乎需要做很多工作。 (?)
    • JSON/REST:我应该以 JSON/REST 格式发送数据吗?我见过RESTkit,但没用过。
  4. 还有什么我应该知道的吗?

那么..这里最好的方法是什么?我完全不确定下一步该做什么。一些解释和/或对有用资源的引用将不胜感激。

【问题讨论】:

    标签: iphone ios ipad sqlite core-data


    【解决方案1】:

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

    【讨论】:

    • 我认为数据库将有大约 1500-2000 条记录(最大),但需要几个月才能填满。你会推荐什么? Sqlite 还是 mysql?
    • 我会推荐 iPhone 上的 CoreData
    【解决方案2】:
    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. 我不知道。 :)

    希望对你有帮助。

    【讨论】:

    • 谢谢,我去看看 TouchJSON。一个问题:如果我在服务器上使用 mysql,我可以轻松地在设备上创建一个副本作为本地 sqlite 数据库吗?我只是想避免每次查询都使用互联网访问。
    • 您可以将您的应用程序与基本数据库(具有结构和一些初始数据的 sqlite 文件)一起发布。稍后您将了解使用 JSON 的数据库之间的差异并更新本地数据库。
    • 那么.. 网络和设备上的 SQLite?
    • 只是为了说明清楚:您必须在服务器和设备上创建相同的结构。区别如下:服务器上将使用 MySQL,而设备上将使用 SQLite。您将从 Web 服务读取 JSON 数据填充客户端数据库。
    【解决方案3】:
    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数据库应该是一样的表名和结构,这样你的设备查询才能执行,

    【讨论】:

      猜你喜欢
      • 2012-01-05
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多