【发布时间】:2018-02-18 07:07:08
【问题描述】:
如果从服务器端获取错误,我如何处理完成块中的错误。这是用于登录的对象映射器类。
class Login: Mappable {
var result: LoginData?
var success: Bool?
var error: String?
required init?(map: Map){
}
func mapping(map: Map) {
result <- map["data"]
success <- map["success"]
error <- map["error"]
}
}
class LoginData: Mappable {
var name: String?
var title: String?
var token: String?
var imageUrl: String?
required init?(map: Map){
}
func mapping(map: Map) {
name <- map["name"]
title <- map["title"]
token <- map["token"]
name <- map["name"]
imageUrl <- map["imageUrl"]
}
}
这是我从视图控制器调用的 api。
func loginMethod(){
let postData = ["username":loginDict.object(forKey: KUserUserId) as! String,
"password": loginDict.object(forKey: KUserPass) as! String]
userLoginHttp(parameters: postData){ completion in
self.getUserLoginResponse(result: completion)
}
}
func getUserLoginResponse(result: LoginData) {
// Here i do further
}
这是我启动服务的网络类方法
//用户登录web服务
func userLoginHttp(parameters:Parameters, completion:@escaping (_
result:LoginData)->()) {
let defaultObject = UserDefaults.standard
var headerToken = String()
if let x = defaultObject.object(forKey: KDeviceToken)
{
headerToken = x as! String
}
else{
headerToken = ""
}
let headers = ["fcmToken": headerToken]
Alamofire.request(KLoginUrl, method: .post, parameters: parameters,encoding: JSONEncoding.default, headers: headers)
.validate()
.responseObject{ (response: DataResponse<Login>) in
switch response.result{
case .success:
let value = response.result.value
completion((value?.result)!)
case .failure(let error):
print(error.localizedDescription)
}
}
}
那么我如何处理视图控制器完成块中的错误?
【问题讨论】:
-
你能发布你的网络回复吗
-
当前错误未从服务器端处理。但我想知道如果错误来自服务器端,我该如何处理。意味着我在成功时使用完成块,那么我如何使用完成块来处理错误?
标签: swift3 alamofire objectmapper