如何快速在 NSUserDefaults 中设置字典?
Posted
技术标签:
【中文标题】如何快速在 NSUserDefaults 中设置字典?【英文标题】:How to set Dictionary in NSUserDefault in swift? 【发布时间】:2016-02-28 23:49:47 【问题描述】:我有一个可变字典(以 [Int:Int] 的形式)并希望它保存它。我会像这样使用 NSUserDefaults:
var myDic: NSMutableDictionary = [:]
myDic = [1:2]
NSUserDefaults.standardUserDefaults().setObject(myDic, forKey: "myDic")
但是我得到一个错误:
线程 1:信号 SIGABRT
我不知道为什么。
【问题讨论】:
【参考方案1】:setObject(_:forKey:)
不能接受带有整数类型键的Dictionary
。该方法需要属性列表对象,但myDic = [1:2]
不是属性列表对象。
有两个关于它的文件。
setObject(_:forKey:) of NSUserDefaults
value
参数只能是属性列表对象:NSData
,NSString
、NSNumber
、NSDate
、NSArray
或NSDictionary
。为了NSArray
和NSDictionary
对象,它们的内容必须是属性 列出对象。
About Property Lists
虽然
NSDictionary
和CFDictionary
对象允许它们的键 是任何类型的对象,如果键不是字符串对象,则 集合不是属性列表对象。
如果将整数键设置为Dictionary
,则Dictionary
对象不能用于setObject
的值。您必须像这样为键使用字符串:
myDic = ["1": 2]
【讨论】:
Dayum,这是一个很好的答案。真的很像老板娘。我喜欢你。非常感谢。我会尽快尝试.. 好的,它可以保存.. 但是我怎样才能重新转换回 int,我也想向它添加一些对象。我现在通过创建let tempDic = myDic.muableCopy()
解决了这一切。有没有更简单的方法?
无论如何,它可以。所以:非常感谢!!以上是关于如何快速在 NSUserDefaults 中设置字典?的主要内容,如果未能解决你的问题,请参考以下文章
如何快速将 NSIndexPath 添加到 NSUserDefaults
在 NSMutableDictionary 中设置 NSURLSessionDownloadTask
NSUserDefaults setValue 和 objectForKey