【发布时间】:2017-04-30 17:04:51
【问题描述】:
我只是想问一下如何在 Swift 中处理带有 null 值的 JSON 返回。 我使用guard来解包值,但如果JSON有一个空值,如下例所示,将不会执行guard
我也想知道使用警卫的正确方法。可以在一个守卫中使用多个条件吗?就像我下面的示例代码一样?
{
"error_code": "0",
"error_description": [],
"status": true,
"results": {
"id": 25,
"email": "jaundelacruz@yahoo.com",
"created_at": "2016-12-10T15:54:03.779Z",
"updated_at": "2016-12-15T06:41:49.432Z",
"first_name": "Juan",
"last_name": "Cruz",
"middle_name": "Dela",
"nickname": "joe",
"option_nickname": null,
"age": 24,
"gender": "Male",
"mobile_number": "639959283721",
"photo_url": {
"url": null
},
"school": "University of the Philippines",
"user_address": null,
"city": "Quezon City",
"country": null,
"longtitude": 121.0621301,
"latitude": 14.5832954,
"facebook_user_id": null,
"device_token": null,
"token": "YrxVEWUMYxieFy7PEsAn",
"is_sent": false,
"show_nickname": false
},
"error": []
}
这是我的代码:
func UserLogin(facebookID: String) -> Void {
UIApplication.shared.isNetworkActivityIndicatorVisible = true
let urlString = Constants.baseURL + Constants.apiURL + Constants.loginUrl
let params:Dictionary<String, AnyObject> = [
"facebook_id": facebookID as AnyObject
]
Alamofire.request(urlString, method: .post, parameters: params, encoding: JSONEncoding.default)
.validate()
.responseJSON { response in
switch response.result {
case .success:
let userjson = JSON(data: response.data!)
let results = userjson["results"].dictionaryValue
guard let auth_token = results["token"]?.string,
let userid = results["id"]?.int,
let firstname = results["first_name"]?.string,
let lastname = results["last_name"]?.string,
let nickname = results["nickname"]?.string,
let city = results["city"]?.string,
let photo = results["photo_url"]?["url"]else{
//nil
return
}
//The Process will not continue from here if the JSON response has a null value)
self.userdefault.saveUserToken(authToken: auth_token)
self.userdefault.setUserID(userID: userid)
self.userdefault.setuserFirstName(userFName: firstname)
self.userdefault.setuserLastName(userLName: lastname)
self.userdefault.setuserNickName(userNName: nickname)
self.userdefault.setuserCity(userCity: city)
self.GotoMainNavigation()
case .failure(let error):
print("susb \(error)")
self.getFacebookInfo()
}
UIApplication.shared.isNetworkActivityIndicatorVisible = false
}
}
谢谢
【问题讨论】:
标签: ios json swift null swift3