在iOS应用使用数据(有什么选择呢?NSData的,CoreData,sqlite的,plist中,

2019-05-13 14:45发布

当我开发一个iPhone应用程序(时间跟踪,TodoList的等),我从来不知道什么是最好的方式来处理数据。 一旦我用了一个plist中,下一次sqlite的或CoreData。

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

例如,如果你想开发:

  • 时间跟踪应用程序>是的plist你的选择?
  • RSS阅读器应用程序> CoreData?
  • 照片应用程序>源码?
  • 电子邮件客户端>?

对于一个初学者,你可以点我粗略地正确方向? (我知道这取决于很多的应用程序,你喜欢什么用它做但是任何想法会帮助)

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

感谢您的帮助,马克

Answer 1:

你可以用拇指这些规则来决定什么样的存储模式会为您的应用程序工作。

  • 如果数据完全装入内存,并且相对松散,使用的plist
  • 如果内存中的数据完全符合并具有树形结构,使用XML
  • 如果数据不适合在内存中,并有图形的结构,并且应用程序并不需要非凡的查询功能,使用核心数据
  • 如果数据不装入内存,具有复杂的结构,或由关系数据库提供强大的查询功能的应用程序的好处,使用SQLite
  • 如果数据必须是秘密(如密码),用钥匙串 。

需要注意的是,这些选择往往重叠,因为多个存储模型将会与同一应用程序。 你最后的决定取决于你的个人喜好 - 你挑,你更好地理解技术。

有一个关于sqlite的对核心数据非常好的问题上堆栈溢出,你可能想通过回答这个问题阅读。



Answer 2:

我为每个的经验法则是:

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

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

在某些时候,你可能会发现你正在存储数据正在超越核心数据的可扩展性。 在这一点上,你会考虑迁移到SQLite的。

问题的关键是,核心数据是很容易使用,因此优于涉嫌重量更轻的替代品,你为什么不使用它呢?



文章来源: Working with data in iOS Apps (What to choose? NSData, CoreData, sqlite, PList, NSUserDefaults)