当用户注册时,他/她被重定向到另一个视图控制器,他们需要验证他们的电话号码。我尝试设置PFQuery从Parse中检索用户的代码,看看它是否与验证文本字段中的内容匹配,但是,它总是导致用户被重定向到主视图控制器,无论输入的代码是否正确或者错了。我也尝试过使用objectForKey(currentUser)和查询if phoneCode != currentUser
,但结果是一样的。我要做的是检查输入的代码是否正确,并根据响应将用户重定向到另一个视图控制器。
@IBAction func submitCodeTapped(sender: AnyObject) {
let currentUser = PFUser.currentUser()?.objectForKey("phoneVerification") as? NSValue
let code = codeTextField.text
let query = PFQuery(className: "User")
let phoneCode = query.whereKey("phoneVerification", equalTo: code!)
query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in
if error != nil || objects != nil {
//if phoneCode != currentUser{
self.displayAlert2("Wrong Code", message: "This is not the code you were sent.")
}else{
let myUser:PFUser = PFUser.currentUser()!
myUser.setObject(true, forKey: "phoneVerified")
myUser.saveInBackgroundWithBlock { (success, error) -> Void in
if error == nil{
print("Successfully set the object.")
self.displayAlert("Great!", message: "Your phone number has been verified!", error: nil)
let appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.buildUserInterface()
}else{
//let loginVC = self.storyboard?.instantiateViewControllerWithIdentifier("signInPage")
//self.navigationController?.pushViewController(loginVC!, animated: true)
print("Erreur")
}
}
}
})
}
答案 0 :(得分:0)
变化
let query = PFQuery(className: "User")
let phoneCode = query.whereKey("phoneVerification", equalTo: code!)
到
let query = PFQuery(className: "_User")
query.whereKey("phoneVerification", equalTo: code!)
如果要使用查询获取用户,则用户类的名称为_User。这就是为什么在你的代码中,你总是得到对象是nil,所以转向else语句。
另外,我建议你打印物品,看看你得到了什么。
答案 1 :(得分:0)
在您的第一个if
语句中,您告诉服务器如果查找对象时出错,或者查询找到了某些对象,则显示警报。但是假设用户输入了错误的代码,查询将返回一个空数组(请注意,它不会返回nil,它是一个空数组),但是赢了&# 39; t为任何错误,因此执行else
块。
并且因为您的" phoneVerification"是一个数字,我们需要将codeTextField.text
转换为NSNumber:
let code = NSNumber(value:Int(codeTextField.text)!)
let query = PFQuery(className: "_User")
query.whereKey("phoneVerification", equalTo: code!)
您可以将第一个if语句更改为:
if ((error != nil && error! as! Bool) || objects?.count == 0) {
//handle the error here.
}