我有这个代码
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
。