0

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

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

UserDefaults.standard.mutableSetValue(forKey:)

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

我尝试将我的 Set 转换为 NSMutableSet,但是当我尝试将其保存在 UserDefaults 中时,它说:

[用户默认值] 尝试将非属性列表对象 {( foo )} 设置为键 KEYNAME 的 NSUserDefaults/CFPreferences 值

4

1 回答 1

2

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

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

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

该协议具有以下方法:

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

简而言之,您需要确保您没有查看 NSKeyValueCoding 方法,避免尝试读/写 Set,而是写一个属性列表对象:

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

于 2018-02-27T21:43:26.503 回答