我想在NSUserDefaults中存储一个Swift集合。
假设我可以使用以下命令从UserDefaults读取NSMutableSet值:
UserDefaults.standard.mutableSetValue(forKey:)
... 似乎我也可以写一个NSMutableSet。
我尝试过converting my Set to NSMutableSet,但当我尝试将其保存为UserDefaults时,它会说:
[用户默认值]尝试设置非属性列表对象{(
福
)}作为键KEYNAME的NSUserDefaults/CFPreferences值
最佳答案
mutableSetValue(forKey:)
有个不幸的名字。
大多数UserDefaults methods看起来非常相似:array(forKey:)
bool(forKey:)
dictionary(forKey:)
object(forKey:)
set(_:forKey:)
然而,mutableArrayValue(forKey:)
实际上来自于NSKeyValueCoding协议!
该协议有如下方法:mutableArrayValue(forKey:)
mutableSetValue(forKey:)
value(forKey:)
setValue(_:forKey:)
在处理用户默认值时,您可能只想使用UserDefaults list列表中的方法,而不是NSKeyValueCoding列表中的方法。
简言之,您需要确保不查看NSKeyValueCoding方法,避免尝试读/写集合,而是编写property-list object:
属性列表只包含特定类型的数据:字典、数组、字符串、数字(整数和浮点数)、日期、二进制数据和布尔值。
关于swift - 将NSMutableSet存储到NSUserDefaults,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49018416/