【问题标题】:Do I need to use NSKeyedArchiver?我需要使用 NSKeyedArchiver 吗?
【发布时间】:2010-09-19 10:08:08
【问题描述】:

我有一个对象。它只有两个 NSStrings 作为属性。

我创建了一个数组来保存其中的几个对象。

我需要使用 NSKeyedArchiver 将这个数组保存到磁盘,还是可以只使用 NSUserDefaults?

【问题讨论】:

    标签: objective-c arrays cocoa-touch nsuserdefaults nskeyedarchiver


    【解决方案1】:

    如果您的对象是自定义类,则需要在将内容放入NSUserDefaults 之前使用NSKeyedArchiver。见here

    【讨论】:

      【解决方案2】:

      您可以只使用[[NSUserDefaults standardUserDefaults] setObject:myArray forKey:myKey]; 进行写作,使用[[NSUserDefaults standardUserDefaults] arrayForKey:myKey]; 进行阅读(没有setArray:forKey:,因为它不需要)。

      此外,如果您有一个不想存储在 NSUserDefaults 中的数组,则可以轻松地写入和读取数组:-[NSArray writeToFile:atomically:]+[NSArray arrayWithContentsOfFile:]。 NSDictionary 也有相同的方法来轻松读/写字典。当然,您也可以随时使用 NSKeyed(Un)Archiver。

      【讨论】:

      • 如果我尝试这样做,我会收到“尝试插入非属性值”错误。
      • @awakeFromNib:你做了什么?我刚刚验证了这段代码:NSArray *array = [NSArray arrayWithObjects:@"One", @"Two", nil]; [[NSUserDefaults standardUserDefaults] setObject:array forKey:@"TestKey"];,它的工作原理完全符合预期。
      猜你喜欢
      • 2015-07-01
      • 1970-01-01
      • 2021-10-24
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多