【发布时间】:2018-11-19 11:26:05
【问题描述】:
我正在使用 alamofire 将数据发布到 php 脚本,该脚本将数据插入 mysql 数据库。这部分工作正常,但我在服务器上进行了一些验证,例如检查有效的电子邮件地址。所以,这里是快速代码:
Alamofire.request(url!, method: .post, parameters: parameters)
.validate(statusCode: 200..<300)
.responseJSON { response in
switch response.result {
case .success:
print(response)
case .failure(let error):
print(error)
}
}
这是处理插入的 php。
if($booking->create($conn)) {
$response['status'] = "200";
$response['message'] = "Success";
} else {
$response['status'] = "400";
$response['message'] = $booking->errors;
}
echo json_encode($response);
在 swift 中,控制台中验证失败的响应是:
SUCCESS: {
message = (
"Invalid email address",
"Contact number required"
);
status = 400;
}
如果没有错误,我实际上想转到另一个视图控制器,如果有错误,我可能想在标签中显示它们。
但是,最初我只想说是否有任何错误,打印它们,如果没有错误,然后继续。但是,如果我尝试将 if 语句放入响应中,则会出现错误。
case .success:
if response == "200" {
// segue
}
二元运算符“==”不能应用于类型的操作数 “数据响应”和“字符串”
【问题讨论】:
-
如果请求格式错误,您的后端不应返回成功的 HTTP 响应代码。在这种特殊情况下,当请求格式错误时,它应该返回 400。此外,
===是引用相等运算符,==是相等运算符。 -
@DávidPásztor,编辑了我的问题。现在不确定是否正确