移除力展开
private func getLanguageCode() -> String {
return Locale.current.languageCode!
}
拆除力后展开
private func getLanguageCode() -> String? {
if let language = Locale.current.languageCode {
return language
}
return nil
}
正确??
为了这
lazy var commonErrorList : Dictionary<String, AnyObject>? = {
let path = Bundle.main.path(forResource: "CommonErrorCodes", ofType: "plist")
return NSDictionary(contentsOfFile: path!) as? [String : AnyObject]
}()
删除强制解包后应该是什么?
你可以
return Locale.current.languageCode
没有强行打开,如果你反正只返回零。
您可以尝试防范,以防止将来嵌套if语句。在守卫声明中它将是这样的:
private func getLanguageCode() throws -> String {
guard let language = Locale.current.languageCode else {
throw LanguageError.CanNotGetCode
}
return language
}
或没有投掷
private func getLanguageCode()-> String? {
guard let language = Locale.current.languageCode else {
return nil
}
return language
}
如果将来要处理功能错误,可以使用throw功能。
你的代码看起来很好。您也可以考虑使用guard
语句。
private func getLanguageCode() -> String? {
guard let language = Locale.current.languageCode else { return nil }
return language
}
如果要返回非可选String,可以执行以下操作:
private func getLanguageCode() -> String {
return Locale.current.languageCode ?? ""
}
如果您更喜欢返回String ?,那么:
private func getLanguageCode() -> String? {
return Locale.current.languageCode
}
如果您仍然想要检测函数内的nil条件,无论出于何种原因:
private func getLanguageCode() -> String? {
guard let language = Locale.current.languageCode else {
// Do something here...
return nil
}
return language
}
如果您不想处理解包,您可以轻松地执行此操作:
private func getLanguageCode() -> String {
return Locale.current.languageCode ?? "en"
}
这将返回可选的值(如果可用),否则将返回指定的值。
您还可以使用属性来获取预期值:
private var getLanguageCode: String {
return Locale.current.languageCode ?? "en"
}
最后的结果是相同的,但你摆脱'()'表示法:-)