使用 sqlite 数据库的 iPhone 4 应用程序

Posted

技术标签:

【中文标题】使用 sqlite 数据库的 iPhone 4 应用程序【英文标题】:iPhone 4 app using sqlite database 【发布时间】:2011-11-19 22:47:04 【问题描述】:

我正在制作一个应用程序,其中我通过以编程方式创建和插入数据来建立与数据库的连接以将 json 数据存储在 sqlite3 数据库中。所有这一切都很好,但我希望下次用户使用这个应用程序时,应该从数据库而不是网络访问数据。你能建议我这样做的方法吗?我在 ViewDidLoad 方法中建立异步连接,并使用表中行数的 json 数组计数,我通过从数据库中选择所需数据来显示表中的值。我希望用户在第二次运行应用程序时即使没有建立连接也应该能够查看数据库中的信息。

【问题讨论】:

我希望下次用户使用这个应用程序时,应该从数据库而不是网络访问数据。如何区分用户是否第二次尝试访问信息,然后通过从数据库中选择值来显示信息? 好吧,我猜你需要将数据库写入手机。然后访问该数据库而不是远程数据库。 我在终端上创建了一个 sqlite3 数据库,并将该文件添加到我的 Xcode 项目中。然后,我在 ViewDidLoad 方法中以编程方式创建一个表(如果不存在则创建表..),并将值插入到 cellForRowAtIndexPath 中的数据库中,插入值后不久,我从数据库中选择要在该特定单元格中显示的值。我做错了吗? 如果结构/方式不正确,请指导我 您需要将数据库复制到可写位置。 【参考方案1】:

有多种方法可以做到这一点。

    当您的应用程序从服务器接收到数据时,您可以在 NSUserDefaults 中存储一个标志,当应用程序第二次启动时,检查存储在 NSUserDefault 中的标志。如果标志为假,则下载数据或从数据库中获取。

    如果没有互联网连接,将自动调用“connection:didFailWithError”委托。在“connection:didFailWithError”方法中再次检查存储在 NSUserDefault 中的标志,如果为真则显示来自数据库的数据,否则给出“无互联网连接”消息。

除了使用 NSURLConnection,你还可以使用 ASIHttp 库“http://allseeing-i.com/ASIHTTPRequest/”

【讨论】:

以上是关于使用 sqlite 数据库的 iPhone 4 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Sqlite3 数据库表无法在 XCode 4.2 中打开

iPhone 只能使用 SQLite 数据库吗?

核心数据(SQLite/iPhone)——设计注意事项?

使用 sqlite 进行 iPhone 本地化?

iPhone 上的 SQLite 数据库

在 iPhone 上使用 SQLite 数据库的空间请求