我以前问这是回答的问题在这里就节省了电池配件的状态。 我现在玩NSUserDefaults的。 我已经成功地保存了一些选项在我的应用程序,但似乎无法保存细胞附件的NSUserDefaults的状态。
许多的尝试之后,我得出的结论,我不知道什么或在哪里,以及保存在何处调用已保存的选项。
anyoone可以点我在正确的方向?
谢谢,
编辑:虽然我明白该变量将可能需要转换,我有一个困难时期需要转换,当什么。
我以前问这是回答的问题在这里就节省了电池配件的状态。 我现在玩NSUserDefaults的。 我已经成功地保存了一些选项在我的应用程序,但似乎无法保存细胞附件的NSUserDefaults的状态。
许多的尝试之后,我得出的结论,我不知道什么或在哪里,以及保存在何处调用已保存的选项。
anyoone可以点我在正确的方向?
谢谢,
编辑:虽然我明白该变量将可能需要转换,我有一个困难时期需要转换,当什么。
在你引用的代码的问题片段使用命名实例变量_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
。
对于不是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的解码他们原来的类型。 如果不是这样,你应该提供一个实现。