将 NSMutableSet 存储到 NSUserDefaults

Store NSMutableSet to NSUserDefaults

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

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

UserDefaults.standard.mutableSetValue(forKey:)

...看来我也应该可以写一个NSMutableSet了。

我尝试了 ,但是当我尝试将其保存在 UserDefaults 中时,它显示:

[User Defaults] Attempt to set a non-property-list object {( foo )} as an NSUserDefaults/CFPreferences value for key KEYNAME

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

大部分UserDefaults methods看起来非常相似:

但是,mutableArrayValue(forKey:) is actually coming from the NSKeyValueCoding协议!

这个协议有如下方法:

处理 UserDefaults 时,您可能只想使用 UserDefaults list instead of the NSKeyValueCoding 列表中的方法。

简而言之,您需要确保您没有查看 NSKeyValueCoding 方法,避免尝试 read/write 一个 Set,而是写一个 property-list object

Property lists consist only of certain types of data: dictionaries, arrays, strings, numbers (integer and float), dates, binary data, and Boolean values.