Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将NSCountedSet持久化为NSUserDefaults_Ios_Objective C - Fatal编程技术网

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.