我有一个可变字典(以[int:int]的形式),希望它能保存下来。我会像这样使用nsuserdefaults:
var myDic: NSMutableDictionary = [:]
myDic = [1:2]
NSUserDefaults.standardUserDefaults().setObject(myDic, forKey: "myDic")
但我犯了个错误:
线程1:信号sigabret
我不知道为什么。
最佳答案
setObject(_:forKey:)
不能使用整数类型的键接受Dictionary
。该方法需要属性列表对象,但myDic = [1:2]
不是属性列表对象。
关于它有两份文件。
setObject(_:forKey:) of NSUserDefaultsvalue
参数只能是属性列表对象:NSData
,NSString
、NSNumber
、NSDate
、NSArray
或NSDictionary
。为了NSArray
和NSDictionary
对象,其内容必须是属性
列出对象。
About Property Lists
尽管NSDictionary
和CFDictionary
对象允许它们的键
是任何类型的对象,如果键不是字符串对象,则
集合不是属性列表对象。
如果将整数键设置为Dictionary
,则Dictionary
对象不能用于setObject
的值。必须对键使用字符串,如下所示:
myDic = ["1": 2]
关于swift - 如何快速设置NSUserDefault中的Dictionary?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35689828/