将NSMutableSet存储到NSUserDefaults

时间:2018-02-27 21:43:27

标签: swift set nsuserdefaults nsmutableset

我想在NSUserDefaults中存储一个Swift Set。

鉴于我可以使用以下方法从UserDefaults读取NSMutableSet值:

UserDefaults.standard.mutableSetValue(forKey:)

......我似乎也应该能够写一个NSMutableSet。

我尝试了converting my Set to NSMutableSet,但当我尝试将其保存在UserDefaults中时,它说:

  

[User Defaults]尝试设置非属性列表对象{(       FOO   )}作为键KEYNAME的NSUserDefaults / CFPreferences值

1 个答案:

答案 0 :(得分:1)

mutableSetValue(forKey:)有一个不幸的名字。

大多数UserDefaults methods看起来非常相似:

但是,mutableArrayValue(forKey:)实际上来自NSKeyValueCoding协议!

该协议的方法如下:

在处理UserDefaults时,您可能只想使用UserDefaults list而不是NSKeyValueCoding列表中的方法。

简而言之,您需要确保不要查看NSKeyValueCoding方法,避免尝试读取/写入Set,而是编写property-list object代替:

  

属性列表仅包含某些类型的数据:字典,数组,字符串,数字(整数和浮点数),日期,二进制数据和布尔值。