首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NSDictionary设置为UserDefaults时出现异常

将NSDictionary设置为UserDefaults时出现异常
EN

Stack Overflow用户
提问于 2017-06-07 14:17:56
回答 2查看 816关注 0票数 1

如何修复异常:

代码语言:javascript
复制
[User Defaults] Attempt to set a non-property-list object {
4 = 5;
} as an NSUserDefaults/CFPreferences value for key MyKey

通过执行以下代码引发(Swift 3)

代码语言:javascript
复制
let ns = NSDictionary(dictionary: [4: 5])
UserDefaults.standard.set(ns, forKey: "MyKey")

上面的代码正确地保存了String类型,但是NSDictionary有问题

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-07 14:35:18

所有属性列表键都必须是String

来自文档

虽然NSDictionaryCFDictionary对象允许它们的键是任何类型的对象,但是如果键不是字符串对象,则集合不是属性列表对象。

代码语言:javascript
复制
let ns = ["4": 5]
UserDefaults.standard.set(ns, forKey: "MyKey")

不需要使用NSDictionary,Swift Dictionary的工作方式是相同的,并且是隐式桥接的。

票数 4
EN

Stack Overflow用户

发布于 2017-06-07 14:29:19

您的字典必须有字符串作为键,才能将其保存到UserDefaults

这对我来说很管用:

代码语言:javascript
复制
let ns = NSDictionary(dictionary: ["4": 5])
UserDefaults.standard.set(ns, forKey: "MyKey")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44415250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档