将 NSMutableSet 存储到 NSUserDefaults [英] Store NSMutableSet to NSUserDefaults

查看:75
本文介绍了将 NSMutableSet 存储到 NSUserDefaults的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to store a Swift Set in NSUserDefaults.

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

Given that I can read a NSMutableSet value from UserDefaults using:

UserDefaults.standard.mutableSetValue(forKey:)

...看来我也应该能够写一个 NSMutableSet.

... it seems like I should be able to write a NSMutableSet too.

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

I tried converting my Set to NSMutableSet, but when I try to save it in UserDefaults it says:

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

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

推荐答案

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

mutableSetValue(forKey:) has an unfortunate name.

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

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

该协议有如下方法:

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

When dealing with UserDefaults, you likely want to only use the methods from the UserDefaults list instead of the NSKeyValueCoding list.

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

In short, you'll want to make sure you're not looking at the NSKeyValueCoding methods, avoid trying to read/write a Set, and write a property-list object instead:

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

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

这篇关于将 NSMutableSet 存储到 NSUserDefaults的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆