【发布时间】:2018-11-28 09:42:53
【问题描述】:
我有一种情况,我必须通过 OTP 代码在注册和登录时检查提供的手机号码。我在 Accounts 类中设置了所有内容,以便在 SignUpViewController 和 SignInViewController 上重复使用它们。
在ViewControllers我想先发送OTP,然后检查它是否从服务器响应发送到推送VerificationViewController,我使用Alamofire进行网络和SwiftyJSON解析JSON响应。现在让我们深入挖掘我的问题的核心:
这是我的SignUpViewController 课程的一部分
var acc: Accounts = Accounts()
@IBAction func signupAction(_ sender: Any) {
if validateFields() {
let fname = self.firstName.text!
let lname = self.lastName.text!
let pnum = self.phoneNumber.text!
self.acc.setFirstName(fn: fname)
self.acc.setLastName(ln: lname)
self.acc.setPhoneNumber(pn: pnum)
let result = self.acc.sendOTP()
if (result) {
let targetVC = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "signupVerfication") as? SignupVerficationViewController
self.navigationController?.pushViewController(targetVC!, animated: true)
}
else {
CustomComponents().alertWithTitle(title: "Error", message: "Unable to Verify Phone Number,Please Try again!", ViewController: self)
}
}
}
这是我的Accounts 课程的一部分
func sendOTP() -> Bool {
let conf = APIConfig()
var returnedResult = false
conf.setURL(url: "patient/auth/send-totp")
conf.setHeader(head: ["Content-Type": "Application/json"])
conf.setBody(body: ["phone_number": self.phoneNumber])
print(self.phoneNumber)
Alamofire.request(conf.getURL(), method: .post, parameters: conf.getBody(), encoding: JSONEncoding.default, headers: conf.getHeader()).validate(statusCode: 200..<600).responseData { response in
let status = response.response?.statusCode
print(status!)
let swiftJSONVar = JSON(response.result.value!)
print(swiftJSONVar)
if (status == 200) {
returnedResult = true
}
}
return returnedResult
}
每当我运行应用程序时,我总是会收到警报作为输出,尽管如您所见,我通过在print(status!) 和print(swiftJSONVar) 打印响应来调试响应。打印的输出是200 作为状态码,我得到了其余的回复。
我一直在网上查看许多教程,例如:Grand Central Dispatch Tutorial for Swift 4 和 Secure Coding With Concurrency in Swift 4 等等,但无法在我的代码块上实现 GCD。
我需要你的帮助吗?
【问题讨论】:
标签: ios swift concurrency grand-central-dispatch