从文件初始化默认值,Swift与Obj-C不同?

时间:2015-12-13 22:55:03

标签: swift macos cocoa

我正在关注找到at Apple的示例代码,以便在我的新应用首次运行时加载初始默认值。但我使用的是Swift,所以我转换了代码:

    let path = NSBundle.mainBundle().pathForResource("InitialDefaults", ofType: "plist")
    let defaults = NSDictionary(contentsOfFile:path!)
    NSUserDefaults.standardUserDefaults().registerDefaults(defaults)

Xcode抱怨最后一行的API需要一个字符串,而不是一个字典。当我尝试右键单击定义时,它找不到它。我找不到任何关于此的Swift API文档。我可以找到的所有文档和示例代码都在Obj-C中,它都需要一个字典。

任何人都知道我在这里做错了吗?

1 个答案:

答案 0 :(得分:2)

registerDefaults需要[String : AnyObject]。所以试试

let path = NSBundle.mainBundle().pathForResource("InitialDefaults", ofType: "plist")
let defaults = NSDictionary(contentsOfFile:path!) as! [String : AnyObject]
NSUserDefaults.standardUserDefaults().registerDefaults(defaults)

更安全的解决方案:

if let path = NSBundle.mainBundle().pathForResource("InitialDefaults", ofType: "plist")
, defaults = NSDictionary(contentsOfFile:path) as? [String : AnyObject]
{
    NSUserDefaults.standardUserDefaults().registerDefaults(defaults)
}