【问题标题】:how to maintain a local database in iphone如何在iphone中维护本地数据库
【发布时间】:2009-12-21 06:46:17
【问题描述】:

我是一名专注于 iphone 应用程序开发的软件工程师,我拥有开发人员许可证。 目前我正在做一个项目,我需要在 iphone 中维护一个本地数据库。每次应用程序启动时,应用程序都应该从远程服务器同步数据。应用程序应添加/更新/删除与远程服务器数据对应的本地表条目。

我打算使用 SQLite DB。我想知道是否有任何框架可用于同步这两个数据库? iphone还支持其他数据库吗?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    我也在做这方面的工作,并将使用 Core Data。我计划使用 Reachability API 来确定我是否能够同步,然后使用 JSON 从远程服务器传输数据。 Core Data 真的很容易使用,你根本不需要直接构建 SQL。它还会自动为您管理将对象保存在内存中,这将有助于您在 iPhone 等受限环境中使用内存。

    【讨论】:

      【解决方案2】:

      我最近完成了一个类似的应用程序(至少在数据库功能方面),我发现 Core Data 非常宝贵。它允许您定义数据模型 - 类似于远程数据库中的数据库模式 - 然后您可以以最适合您的任何格式提取数据并将其存储在 Core Data 中。

      该框架将抽象出诸如底层持久性机制之类的东西,因此您可以使用 SQLite(默认)或其他几种数据存储格式(XML 是一种选择,IIRC)。您还可以以面向对象的方式操作数据记录,这在驱动应用程序的其他部分(如 UI)时非常方便。查看Core Data Programming Guide 了解更多信息。

      至于同步框架本身,我不知道有任何预构建的东西可以满足您的需求。我的解决方案是让服务器上的 SQL 守护进程生成 XML(MySQL 恰好有一个方便的命令行选项 --xml 用于此目的),然后在 iPhone 端使用 NSXMLParser 将 XML 解析回 Core Data 对象(当然其他人会推荐 libxml - 我只是坚持使用最容易获得的东西)。

      【讨论】:

      • 仅供参考,我(几乎完全确定)CoreData 的 iPhone 实现只允许将数据存储在 sqlite 数据库中,这与具有多种不同支持选项的桌面版本不同。
      • 根据developer.apple.com/iphone/library/documentation/Cocoa/…,在 iPhone 上你没有得到 XML(所以我的一个例子是错误的 :),但是你得到了一个原子和一个内存存储,以及定义您自己的商店类型的能力。不过,这很好,因为它比完整的 Mac 平台更受限制。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      相关资源
      最近更新 更多