【问题标题】:Working with data in iOS Apps (What to choose? NSData, CoreData, sqlite, PList, NSUserDefaults)在 iOS 应用程序中处理数据(选择什么?NSData、CoreData、sqlite、PList、NSUserDefaults)
【发布时间】:2012-05-01 22:53:16
【问题描述】:

当我开发 iPhone 应用程序(时间跟踪器、ToDoList 等)时,我永远不知道处理数据的最佳方式是什么。一旦我使用了 plist,下次使用 sqlite 或 CoreData。

您如何确定最适合您的项目的方法? (只谈数据管理)

例如如果你想开发:

  • 时间跟踪器应用 > PList 是您的选择吗?
  • RSS 阅读器应用程序 > CoreData?
  • 照片应用 > sqlite?
  • 电子邮件客户端 > ?

对于初学者,您能大致指出正确的方向吗? (我知道这在很大程度上取决于应用程序以及您喜欢做什么 它,但任何想法都会有所帮助)

我离开发复杂的应用程序还很远,它们仍然很简单。

感谢您的帮助, 马克

【问题讨论】:

  • 如果您的应用程序是“数据库管理系统”,则选择 coredata。!但请记住,它是框架而不是数据库。

标签: objective-c core-data sqlite plist nsuserdefaults


【解决方案1】:

您可以使用这些经验法则来决定哪种存储模型适用于您的应用。

  • 如果数据完全适合内存并且相对非结构化,请使用 plist
  • 如果数据完全适合内存并且具有树状结构,请使用 XML
  • 如果数据不适合内存并且具有图形结构,并且应用程序不需要非凡的查询功能,请使用 Core Data
  • 如果数据不适合内存、结构复杂或应用受益于关系数据库提供的强大查询功能,请使用 sqlite
  • 如果数据必须保密(例如密码),请使用keychain

请注意,这些选择通常会重叠,因为多个存储模型适合同一个应用。您的最终决定取决于您的个人喜好 - 您选择一种您更了解的技术。

在 Stack Overflow 上有一个 very good question about sqlite vs. Core Data,您可能需要阅读该问题的答案。

【讨论】:

  • 正是我需要的,非常好的答案,谢谢,周末愉快。
【解决方案2】:

我的经验法则是:

  • 时间跟踪器应用程序 > 核心数据
  • RSS阅读器应用>核心数据
  • 照片应用 > 核心数据
  • 电子邮件客户端 > 核心数据

尽管在每种情况下,您都会在文件系统中存储一些内容。例如,照片应用程序显然会将实际照片放在文件系统上。电子邮件的文本将在文件系统等上。实际的 RSS 消息也可能是文本文件,但在核心数据对象中包含元数据。

在某些时候,您可能会发现您存储的数据超出了 Core Data 的可扩展性。那时你会考虑迁移到 SQLite。

关键是 Core Data 非常易于使用,并且优于所谓的轻量级替代品,您为什么不使用它?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多