iOS / Swift 1.2 NSDictionray / Dictionary上的NSStandardUserDefaults
在“旧”Swift中,我用来注册我的默认值从.plist文件加载,像这样…
let prefs = NSBundle.mainBundle().pathForResource("UserDefaults", ofType: "plist"); let dict = NSDictionary(contentsOfFile: prefs!); let defaults:NSDictionary! = dict?.valueForKey("defaults") as! NSDictionary; NSUserDefaults.standardUserDefaults().registerDefaults(defaults); NSUserDefaults.standardUserDefaults().synchronize();
在Swift 1.2下,我得到错误…
无法使用types为“(NSDictionary!)”的参数列表调用“registerDefaults”
所以,事情已经改变了,Swift不再接受一个NSDictionary作为registerDefaults的一个参数。
那么,如何将我的NSDictionary转换为一个Dictionary对象,因为它们不能再互换?
您需要提供从NSDictionary
到[NSObject:AnyObject]
–
使用
let prefs = NSBundle.mainBundle().pathForResource("UserDefaults", ofType: "plist"); let dict = NSDictionary(contentsOfFile: prefs!); let defaults:NSDictionary! = dict?.valueForKey("defaults") as! NSDictionary NSUserDefaults.standardUserDefaults().registerDefaults(defaults as [NSObject : AnyObject]); NSUserDefaults.standardUserDefaults().synchronize();
用户默认可以存储NSDictionary对象。 这些映射到Swift作为[NSObject:AnyObject]:
尝试这个:
NSUserDefaults.standardUserDefaults().setObject(defaults, forKey: "defaults") var isOk = NSUserDefaults.standardUserDefaults().synchronize();