我想在NSUserDefaults中存储一个Swift Set。
鉴于我可以使用以下方法从UserDefaults读取NSMutableSet值:
UserDefaults.standard.mutableSetValue(forKey:)
......我似乎也应该能够写一个NSMutableSet。
我尝试了converting my Set to NSMutableSet,但当我尝试将其保存在UserDefaults中时,它说:
[User Defaults]尝试设置非属性列表对象{( FOO )}作为键KEYNAME的NSUserDefaults / CFPreferences值
答案 0 :(得分:1)
mutableSetValue(forKey:)
有一个不幸的名字。
大多数UserDefaults methods看起来非常相似:
但是,mutableArrayValue(forKey:)
实际上来自NSKeyValueCoding协议!
该协议的方法如下:
在处理UserDefaults时,您可能只想使用UserDefaults list而不是NSKeyValueCoding列表中的方法。
简而言之,您需要确保不要查看NSKeyValueCoding方法,避免尝试读取/写入Set,而是编写property-list object代替:
属性列表仅包含某些类型的数据:字典,数组,字符串,数字(整数和浮点数),日期,二进制数据和布尔值。