Ios 将NSCountedSet持久化为NSUserDefaults
我需要将自定义对象的Ios 将NSCountedSet持久化为NSUserDefaults,ios,objective-c,Ios,Objective C,我需要将自定义对象的NSCountedSet持久化为NSUserDefaults 我认为问题在于-(id)objectForKey:对于NSUserDefaults在文档中有一个特殊的考虑: 问题 如果(正如我目前所假设的那样)NSUserDefaults从-(id)返回一个不可变的NSSet,我将如何持久化NSCountedSetobjectForKey:当我需要保留NSCountedSet包含的内部计数元数据时?您不能将NSCountedSet写入用户默认值。只有数组、字典、字符串、数字、日
NSCountedSet
持久化为NSUserDefaults
我认为问题在于-(id)objectForKey:
对于NSUserDefaults
在文档中有一个特殊的考虑:
问题
如果(正如我目前所假设的那样)
NSUserDefaults
从-(id)返回一个不可变的NSSet
,我将如何持久化NSCountedSet
objectForKey:
当我需要保留NSCountedSet
包含的内部计数元数据时?您不能将NSCountedSet写入用户默认值。只有数组、字典、字符串、数字、日期和数据
您可以创建一个与NSCountedSet匹配的字典,将set元素作为键,将转换为NSNumber的计数作为值。当然,当你阅读字典时,把它转换成一个计数集。只有几行代码
或者,转换为一个数组,该数组的值根据其计数而重复。如果计数集包含计数为3的“Hello”,则将其添加到数组中三次
NSCountedSet*myCountedSet=[[NSCountedSet alloc]initWithSet:[[NSUserDefaults standardUserDefaults]objectForKey:yourKey];
?这会保存数据结构的计数元数据吗?请查看NSUserDefaults文档:“默认对象必须是属性列表,即(或集合实例的组合):NSData、NSString、NSNumber、NSDate、NSArray或NSDictionary。“-我看不到该列表中设置了NS(计数)。^就这些,谢谢
Special Considerations
The returned object is immutable, even if the value you originally set was mutable.