objective-c - 在 iOS 应用程序中处理数据(选择什么?NSData、CoreData、sqlite、PList、NSUserDefaults)

标签 objective-c core-data sqlite plist nsuserdefaults

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

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

例如,如果你想开发:

  • Time Tracker 应用 > PList 是您的选择吗?
  • RSS 阅读器应用 > CoreData?
  • 照片应用 > sqlite?
  • 电子邮件客户端 > ?

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

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

感谢帮助, 马克

最佳答案

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

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

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

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

关于objective-c - 在 iOS 应用程序中处理数据(选择什么?NSData、CoreData、sqlite、PList、NSUserDefaults),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10244782/

相关文章:

objective-c - [self.managedObjectContext deleteObject :self];

javascript - SQLite数据库写入硬盘后执行代码

objective-c - 这些系统头文件在哪里?

ios - 如何使用 IN sql 子句查询 coredata?

ios - 使 UINavigationBar 透明

iphone - 通过以编程方式设置 key 动态创建 NSPredicate

android - SQLite:rawQuery() 不起作用,但 execSQL() 起作用

java - 从 SQLite 存储和检索对象

iphone - 从具有 BOOL 值的 plist 问题中读取 NSDictionary

ios - [ dismissViewControllerAnimated :YES completion:nil]; not working for iOS device 7