对于给定的配置,我应该尝试使用NSUserDefaults还是去CoreData?

时间:2011-03-27 08:30:01

标签: iphone ios core-data nsuserdefaults

对于给定的配置,我需要能够存储我应该考虑使用NSUserDefaults,还是去CoreData?

iPhone的配置大致如此,请注意3个级别:

  • 项目( NSMutableArray
    • aString:NSString
    • aString2:NSString
    • aDate:NSDate
    • aDate2:NSDate
    • aBool:BOOL
    • aTI1:NSTimeInterval
    • aTI2:NSTimeInterval
    • 关键字( NSMutableArray
      • keyword:NSString
      • keyword:NSString

PS对iPhone的新手所以还没有任何投入时间用于任何特定的持久性方法。

2 个答案:

答案 0 :(得分:2)

查看结构,我建议您使用NSDictionary将数据保存在特定密钥中。

是否使用Core DataNSUserDefault取决于您是希望将数据保存在plist上,并且每次启动应用程序时都可用,或者在类之间共享数据而不保存它们分别是一个文件。

答案 1 :(得分:2)

NSUserDefaults和Core Data执行两项不同的任务,您应该选择适合您希望保留的数据的任务。

尽管有历史名称,NSUserDefaults仍然是应用程序首选项。 (在旧的下一天,有一组复杂的基于网络的偏好域,其中NSUserDefaults仅仅是底层/本地最常用的首选项。在iOS中,它们已成为首选项,并且封闭域已被删除或隐藏。)如果您希望持久的数据与应用程序状态相关,例如用户选择UI布局(如字体或启动模式),上次打开视图,上次查看的网页,然后该信息应进入默认值。

相比之下,核心数据旨在实现模型 - 视图 - 控制器设计应用程序的整个数据模型层(所有iOS应用程序都是。)它的主要任务不是持久性/保存,而是建模/模拟连接的逻辑和关系到应用程序的数据。实际上,模型层是应用程序逻辑的核心,控制器和视图只是接口。

因此,Core Data对于保存像您一样的小块数据来说太过分了。你当然可以这样做,但就像驾驶一辆半卡车到QuickyMart去拖一夸脱的牛奶一样。

也许更重要的是,如果数据是应用程序状态数据,那么它需要在用户默认值中,以便(1)数据在应用程序启动时可用,(2)它在应用程序的任何位置都可用。