我正在尝试向NSDefault添加一组uiviews,但它似乎没有保留数组。有人知道为什么吗?我还尝试将每个视图存储在nsvalue中,然后将其存储在nsdefault中,但仍无法正常工作。
NSArray *arr = [[NSArray alloc] initWithObjects:[NSValue valueWithNonretainedObject:myView], nil]];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:arr forKey:@"myKey"];
NSArray *resultArray = [defaults objectForKey:@"myKey"];
并且resultArray是nil!
由于
我之所以这样做是因为这些是我的uitableview的标题视图。由于创建它们需要时间,我只想创建它们一次并存储它们以供将来访问。
答案 0 :(得分:3)
来自NSUserDefaults的文档:
NSUserDefaults类提供了访问常用类型(如浮点数,双精度数,整数,布尔值和URL)的便捷方法。默认对象必须是属性列表,即(或集合的实例组合)的实例:NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary。如果要存储任何其他类型的对象,通常应将其存档以创建NSData实例。有关更多详细信息,请参阅“首选项和设置编程指南”。
如果你想在NSUserDefaults中放置一个UIView(为什么?),你需要先将它存档到NSData对象中。
但你需要问问自己为什么要在NSUserDefaults中放置一个视图。您应该只在NSUserDefaults中放置一些数据。视图显示数据。一旦掌握了数据,就可以轻松重新显示视图。考虑在NSUserDefaults中放置一些所需的数据。
答案 1 :(得分:2)
你确定要这样做吗?最好将一组模型存储到数据库或某个文件中,并在需要时从它们重新创建视图。
答案 2 :(得分:1)