我有这个代码

let path = self.userDesktopDirectory + "/Library/Preferences/.GlobalPreferences.plist"
        let dictRoot = NSDictionary(contentsOfFile: path)
        if let dict = dictRoot{
                try print(dict["AppleLocale"] as! String)
        }


如果值“ AppleLocale”不存在,脚本将崩溃。我必须添加什么来“捕获”错误并避免崩溃?

最佳答案

如果值“ AppleLocale”不存在,脚本将崩溃。我什么
  必须添加“捕获”错误并避免崩溃?


取决于导致崩溃的原因是什么。提到“如果值AppleLocale不存在”,则表示崩溃的原因是强制转换:

dict["AppleLocale"] as! String


可能与try无关,可能是:


  展开可选值时意外找到nil


意味着dict["AppleLocale"]在某些时候可能是nil,即使它包含的值不是字符串,也会崩溃(optional)。您必须确保dict["AppleLocale"]是有效的(不是nil)字符串,不仅可以遵循一种方法,例如可以进行可选的绑定,如下所示:

let path = self.userDesktopDirectory + "/Library/Preferences/.GlobalPreferences.plist"
let dictRoot = NSDictionary(contentsOfFile: path)
if let dict = dictRoot{
    if let appleLocale = dict["AppleLocale"] as? String {
        print(appleLocale)
    } else {
        // `dict["AppleLocale"]` is nil OR contains not string value
    }
}


实际上,我认为在这种情况下您不必处理try

10-04 13:01