iOS/Swift 1.2 NSDictionray/Dictionary NSStandardUserDefaults

iOS/Swift 1.2 NSDictionray/Dictionary on NSStandardUserDefaults

在 'old' 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下,我得到错误...

无法使用“(NSDictionary!)”类型的参数列表调用 'registerDefaults'

所以,有些事情发生了变化,Swift 不再接受 NSDictionary 作为 registerDefaults 的参数。

那么,如果我的 NSDictionary 不再可以互换,我该如何将其转换为 Dictionary 对象?

用户默认可以存储NSDictionary对象。这些映射到 Swift 作为 [NSObject : AnyObject]:

试试这个:

NSUserDefaults.standardUserDefaults().setObject(defaults, forKey: "defaults")
var isOk = NSUserDefaults.standardUserDefaults().synchronize();

您需要提供从 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();