gpt4 book ai didi

ios - 使用 swift 查找现有 PFUser

转载 作者:行者123 更新时间:2023-11-30 13:31:30 25 4
gpt4 key购买 nike

我使用以下代码来识别 PFUser 是否已存在:

let findExistingUserQuery = PFQuery(className: "_User")
findExistingUserQuery.whereKey("email", equalTo: EmailTextField.text!)
findExistingUserQuery.findObjectsInBackgroundWithBlock{ (objects, error) -> Void in
if(error == nil){
print(objects![0])
if(objects!.count > 0){
let existingAlert = UIAlertController(title: "Alert", message: "A user with this email already exists", preferredStyle: .Alert)
existingAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: nil))
self.presentViewController(existingAlert, animated: true, completion: nil)

self.Spinner.hidden = true
self.Spinner.stopAnimating()

print("exists")
}else{
print("available")
//temporarily save user info
user.username = self.EmailTextField.text
user.email = self.EmailTextField.text
user["PhoneNumber"] = self.PhoneNumberTextField.text
phone = self.PhoneNumberTextField.text!

//segue to Create Profile Screen
self.performSegueWithIdentifier("ToCreateProfileSegue", sender: nil)
self.Spinner.hidden = true
self.Spinner.stopAnimating()
}
}

}

但是,由于某种原因,即使没有用户,else也永远不会被调用。调用的第一部分起作用,可以识别用户何时已加载到数据库中。有什么建议吗?

最佳答案

有两件事:一 - 当用户注册时,Parse 会自动为您执行此操作(它检查用户名和/或电子邮件是否与任何其他帐户匹配)。二 - 我实际上也一直在解决这个结果问题。如果查询发出去,error == nil 并且返回了对象,Swift 认为没有问题发生。我相信得到的结果是没有现有用户拥有该电子邮件地址([])。所以我认为你需要检查结果是否 == ([]) 或 == nil。我只是用它来检测返回的结果是否不包含有值(value)的信息。

我注意到的其他一些事情(仅当这将成为一个生产应用程序时才适用)

1) 检查是否objects == nil,然后检查else if error != nil,然后执行else语句。如果 Parse 返回错误,您可以使用 error!.localizedDescription

显示该错误

2)performSegue中的发送者应该是Self,指的是self是你现在所在的 View Controller ,而该 View Controller 是发送者(执行segue的那个)。

3) 确保在用户注册或登录时清理字符以除去任何空格。另外,here是如何检测电子邮件是否确实是电子邮件。

关于ios - 使用 swift 查找现有 PFUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36530883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com