在 iOS 应用程序中处理数据(选择啥?NSData、CoreData、sqlite、PList、NSUserDefaults)
Posted
技术标签:
【中文标题】在 iOS 应用程序中处理数据(选择啥?NSData、CoreData、sqlite、PList、NSUserDefaults)【英文标题】:Working with data in iOS Apps (What to choose? NSData, CoreData, sqlite, PList, NSUserDefaults)在 iOS 应用程序中处理数据(选择什么?NSData、CoreData、sqlite、PList、NSUserDefaults) 【发布时间】:2012-04-20 10:49:32 【问题描述】:当我开发 iPhone 应用程序(时间跟踪器、ToDoList 等)时,我永远不知道处理数据的最佳方式是什么。一旦我使用了 plist,下次使用 sqlite 或 CoreData。
您如何确定最适合您的项目的方法? (只谈数据管理)
例如如果你想开发:
时间跟踪器应用 > PList 是您的选择吗? RSS 阅读器应用程序 > CoreData? 照片应用 > sqlite? 电子邮件客户端 > ?对于初学者,您能大致指出正确的方向吗? (我知道这在很大程度上取决于应用程序以及您喜欢做什么 它,但任何想法都会有所帮助)
我离开发复杂的应用程序还很远,它们仍然很简单。
感谢您的帮助, 马克
【问题讨论】:
如果您的应用程序是“数据库管理系统”,那么请使用 coredata。!但请记住,它是框架而不是数据库。 【参考方案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 非常易于使用,并且优于所谓的轻量级替代品,您为什么不使用它?
【讨论】:
以上是关于在 iOS 应用程序中处理数据(选择啥?NSData、CoreData、sqlite、PList、NSUserDefaults)的主要内容,如果未能解决你的问题,请参考以下文章