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();