保存细胞附件NSUserDefaults的(Saving cell accessory to NSU

2019-11-01 08:27发布

我以前问这是回答的问题在这里就节省了电池配件的状态。 我现在玩NSUserDefaults的。 我已经成功地保存了一些选项在我的应用程序,但似乎无法保存细胞附件的NSUserDefaults的状态。

许多的尝试之后,我得出的结论,我不知道什么或在哪里,以及保存在何处调用已保存的选项。

anyoone可以点我在正确的方向?

谢谢,

编辑:虽然我明白该变量将可能需要转换,我有一个困难时期需要转换,当什么。

Answer 1:

在你引用的代码的问题片段使用命名实例变量_accessoryStyle 。 变量具有类型NSMutableArray 。 假设你仍然有这个变量,你可以将其内容简单地保存到用户默认设置是这样的:

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:self._accessoryStyle forKey:@"aKeyName"];

如果以后要检索的数据,你可以做这样的:

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* immutableData = [userDefaults arrayForKey:@"aKeyName"]];
[self._accessoryStyle setArray:immutableData];

检索稍微复杂一些,因为arrayForKey:返回一个不可改变NSArray ,而不是一个NSMutableArray



Answer 2:

对于不是NSData的,NSDate的,的NSString,NSArray的,NSDictionary中,NSNumber的对象(因为它们不能被保存在一个plist文件),你可以使用这些宏:

#define SetDefaultObjectForKey(object, key) [ [NSUserDefaults standardUserDefaults] setObject: [NSKeyedArchiver archivedDataWithRootObject: object] forKey: key]

#define GetDefaultObjectForkey(key) [NSKeyedUnarchiver unarchivedObjectWithData: [ [NSUserDefaults standardUserDefaults] objectForKey: key] ]

所以,你保存时将其转换为NSData的,在读取时,只要该对象实现NSCoding协议从NSData的解码他们原来的类型。 如果不是这样,你应该提供一个实现。



文章来源: Saving cell accessory to NSUserDefaults