func doGetLocalDataUser() -> logInResponse {
var localData : logInResponse? = nil
if let userData = UserDefaults.standard
.data(forKey: ConstantStrings.KEY_USER_LOGIN_DATA),let user = try? JSONDecoder()
.decode(logInResponse.self ,from: userData){
localData = user
}
return localData!
}
答案 0 :(得分:0)
localData
为nil,所以您非法强行解开localData
(作为logInResponse
)。
如果您的可选链接在任何时候都找到nil
(例如userData
在UserDefaults
中不存在/类型错误),它将不会执行。
您正在声明此doGetLocalDataUser()
函数以返回非可选的logInResponse
类型,并强制展开nil
值以尝试检索一个值。最佳做法是避免强行解开“爆炸”运算符“ !
”,因为这可能会导致致命错误。
简单的解决方案是将您的方法更改为返回可选的logInResponse?
类型,并消除bang运算符:
func doGetLocalDataUser() -> logInResponse? {
if let userData = UserDefaults.standard.data(forKey: ConstantStrings.KEY_USER_LOGIN_DATA), let user = try? JSONDecoder().decode(logInResponse.self ,from: userData){
return user
} else {
return nil
}
}
答案 1 :(得分:0)
我将方法更改为此:
$this->queryBuilder->getQueryPart('groupBy')
请记住,JSON解码可能会失败(可能格式错误),因此用户将为nil,并且此方法可以返回nil