使用iOS应用程序中的数据(select什么?NSData,CoreData,sqlite,PList,NSUserDefaults)

当我开发一个iPhone应用程序(时间追踪,ToDoList等),我永远不知道最好的方式来处理数据。 一旦我使用plist,下次sqlite或CoreData。

你如何决定什么是最适合你的项目? (只谈数据pipe理)

例如,如果你想开发:

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

对于初学者,你能粗略地指出我的方向吗? (我知道这取决于应用程序和你喜欢做什么,但任何想法都会有所帮助)

我远离开发复杂的应用程序,他们仍然非常简单。

谢谢你的帮助,Marc

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

  • 如果数据完全适合内存并且相对没有结构化,请使用plist
  • 如果数据完全适合内存并且具有树形结构,则使用XML
  • 如果数据不适合内存,并且具有graphics的结构,并且该应用程序不需要特别的查询function,请使用核心数据
  • 如果数据不适合内存,结构复杂,或者应用程序受益于关系数据库提供的强大查询function,则使用sqlite
  • 如果数据必须是秘密的(例如密码),请使用钥匙串 。

请注意,这些select经常重叠,因为多个存储模型将适合相同的应用程序。 你的最终决定取决于你的个人偏好 – 你select一种你更了解的技术。

关于sqlite和堆栈溢出核心数据有一个很好的问题 ,你可能想要通读这个问题的答案。

我的经验法则是:

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

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

在某些时候,您可能会发现您所存储的数据超过了Core Data的可扩展性。 在这一点上,你会考虑转移到SQLite。

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