【问题标题】:Which method of data storage for a simple iOS app?简单的 iOS 应用程序的数据存储方法是什么?
【发布时间】:2012-05-30 11:17:42
【问题描述】:

我正在编写一个天气应用程序,该应用程序会根据当前条件/温度了解您穿什么,从而告诉您应该在户外穿什么。我正在收集一些简单的数据并将其存储在设备上。我正在收集:

  • 日期/时间
  • 天气温度
  • 天气状况
  • 6 个 int 字段:
    • 胸部
    • 配件

我会根据当前温度/条件查询数据,取6个int字段的平均值,预测用户平时穿什么。

我只保留在 iPhone 上。什么是好的客户端数据存储方法?查询不是太密集,但我需要查询类型和范围。

我以前没有使用过 Core Data。对 MySQL 非常熟悉,但没有接触过 SQLite。同样,为了简单/速度,我想保留这个客户端而不是使用数据库。我的目标是开发一个入门/退出应用程序。

【问题讨论】:

  • NSUserDefaults(通过 .plist 文件)也许?看起来像一些相当简单的数据项,所以恕我直言 Core Data 或类似的可能有点过头了。
  • 我没有考虑 .plist,这可能值得研究。我认为这将是矫枉过正,为这样一个简单的任务学习核心数据。虽然,我可能只需要为几个数据点加载整个 .plist ......但是,我确实想避免使用 NSUserDefaults ,因为在我看来,除了 user defaults 之外的东西存储是糟糕的设计。
  • NSKeyedArchiver 可以在文件中存储任意对象图。它非常方便,但是您必须自己编写所有查询(通过数组搜索、匹配键等)。咬紧牙关学习 Core Data,无论如何您最终都会这样做。

标签: iphone database sqlite database-design core-data


【解决方案1】:

我建议使用 Core Data 或 SQLite。你的权利,这不是很多数据被存储。如果该应用程序是成功的,并且您想扩展您的概念怎么办?

例如:

(1) 你想存储更多数据

(2) 可能同步数据到服务器

(3) 更改存储的数据类型

你甚至在你的问题中提到了 QUERY,对我来说这就是你的答案。使用 Core Data,这一切都会变得容易得多。会有一个学习曲线,但学习这个框架将对未来的项目有益。

祝你的项目好运。

【讨论】:

  • 我将不得不做几个 Ray Wenderlich 的教程,看看我是如何公平的。如果太难了,那么我可能会像 Philip 建议的那样使用 SQLite。编辑:另外,我的职业生涯是在一家公司编写应用程序开始的,所以我还不如让 Core Data 失望。谢谢!
【解决方案2】:

之前的一张海报推荐使用 Core Data 而不是 SQLite。尽管他们推荐这两种替代方案中的一种是正确的,但如果您已经熟悉 MySQL 并且正在寻找入门/退出应用程序,我建议您使用 SQLite。

Core Data 是一个出色的框架,但考虑到您的规格和以前的经验,可能不值得考虑学习曲线。 SQLite 简单、快速且是客户端。此外,您的查询看起来与 MySQL 没有任何不同。

其他海报提到通过 NSUserDefaults 或 NSKeyedArchiver 进行序列化。虽然它们确实使序列化变得简单,但您最终将使用 NSPredicate 滚动您自己的查询代码。这并不难,但同样,它可能是一项新技术,虽然值得,但最好留到下一次。更令人担忧的是,如果您的应用确实开始快速使用大量数据,它们将无法很好地扩展。

关于更普遍的规模,如果您的应用程序确实非常成功,那么请担心它。您始终可以在必要时重构和扩展。

【讨论】:

  • 说它确实扩展了,SQLite 如何同步到服务器数据库?我会使用用 MySQL 编写的数据库并基本上传输数据吗?或者我可以在 SQLite 中的服务器上有一个数据库吗?
  • 我认为在服务器端看到 MySQL 或 PostgreSQL 而不是 SQLite 更为常见。无论哪种方式,即使您使用 Core Data 或其他格式,您也必须将数据序列化为 JSON、XML 或一堆 POST 变量,然后将它们发送到您的服务器进行存储。从中获取信息也是如此。也就是说,您可能不会只是将整个 SQLite 存储发送到服务器。来回发送数据位非常简单。优秀的 AFNetworking 和 JSON 套件可以处理各种 HTTP 方法并处理 NSDictionary 等原生 Cocoa 对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 2023-03-08
相关资源
最近更新 更多