【问题标题】:How to save array to NSUserDefaults?如何将数组保存到 NSUserDefaults?
【发布时间】:2010-08-02 16:19:09
【问题描述】:

我想在 NSUserDefaults 中保存一组视图控制器,但我不确定如何:

[[NSUserDefaults standardUserDefaults] setObject:tabBarController.viewControllers forKey:@"tabOrder"];

当我阅读以上行时,我的 tabBarController.viewControllers 是空白的。

【问题讨论】:

标签: iphone objective-c cocoa-touch nsarray nsuserdefaults


【解决方案1】:

此数组中的视图控制器不可序列化,因此不会保存到NSUserDefaults

来自NSUserDefaults reference

value 参数只能是属性列表对象:NSData、NSString、NSNumber、NSDate、NSArray 或 NSDictionary。对于 NSArray 和 NSDictionary 对象,它们的内容必须是属性列表对象。请参阅“什么是属性列表?”在属性列表编程指南中。

您应该在下次加载时重新初始化视图控制器。但是,您可以将他们的数据序列化为 NSUserDefaults 到一些自定义字段。

【讨论】:

    【解决方案2】:

    你可以使用 NSUserDefault 保存对象..

    [[NSUserDefaults standardUserDefaults]setObject:[NSKeyedArchiver archivedDataWithRootObject:self.flipsideView.zoznamFunkcii] forKey:@"NSMutableArray"]; [[NSUserDefaults standardUserDefaults]同步];

    你制作编码器和解码器方法

    • (id)initWithCoder:(NSCoder *)decoder { if (self = [super init]) { self.toolResult = [解码器 decodeObjectForKey:@"obj1"]; self.toolNotes = [解码器decodeObjectForKey:@"obj2"];

      } 回归自我; }

    • (void)encodeWithCoder:(NSCoder *)encoder { [编码器 encodeObject:self.toolResult forKey:@"obj1"]; [encoder encodeObject:self.toolNotes forKey:@"obj2"];

    }

    您的数据保存到 NsuserDefault 当您从 NsUserDefault 获取数据时,您可以像这样使用 [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:@"NSMutableArray"]];

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多