iOS swift parse + 如何检查电子邮件是否已存在于数据库中

标签 ios swift parse-platform

我正在使用 Parse 开发 iOS Swift 项目。我需要允许用户更新他们的电子邮件,但它应该是唯一的。目前,我的代码如下所示:

var user = PFUser.currentUser()
    var userName = user.username

    var profQuery = PFQuery(className: "User")
    profQuery.whereKey("email", equalTo: fnEditEmail)

    profQuery.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]?, error: NSError?) -> Void in

        if error == nil && objects!.count < 1 {
            if let objects = objects as? [PFObject] {
                for object in objects {
                    println(object.objectId)
                    object.setValue(self.fnEditEmail.text, forKey: "email")
                    object.setValue(self.fnEditAge.text, forKey: "age")
                    object.setValue(self.fnEditGender.text, forKey: "gender")
                    object.setValue(self.fnEditText.text, forKey: "fullname")

                    object.setValue(self.keyWord1.text, forKey: "key1")
                    object.setValue(self.keyWord2.text, forKey: "key2")
                    object.setValue(self.keyWord3.text, forKey: "key3")
                    object.setValue(self.keyWord4.text, forKey: "key4")

                    object.saveInBackgroundWithBlock {
                        (succeeded: Bool!, error: NSError!) -> Void in
                        if error == nil {
                             println "Profile Updated."
                            } else {
                                println "Failed"
                            }
                    }
                }
            } else if error == nil && objects!.count >= 1 {
                println "email already exist."
                } else if error != nil {
                    println "couldn't update, please try again."
                    }
            }
        }

我不认为这是正确的代码,它也不起作用。有人可以指导我如何适应这个,如果我可以防止两个 PFQuery 和 findObjectsInBackgroundWithBlock,我认为这里需要什么;一个用于检查当前数据库中是否存在该电子邮件,另一个用于更新行。

最佳答案

如果您尝试设置 PFUser 的电子邮件字段,Parse 会自动检测到这一点。例如,当用户注册到您的应用程序时,Parse 将返回一个错误,指出该电子邮件已被使用并且不允许注册。事实上,我很确定它甚至会为您提供警报。

在您的应用程序的任何其他部分,如果用户尝试更新他们的电子邮件,Parse 将以相同的方式工作,尽管没有您必须处理的错误显示。

因此,您不必进行任何查询或任何操作。您只需尝试更新 PFUser 对象的电子邮件字段并保存它,如果这样的电子邮件地址已经存在,Parse 将为您返回错误。

底线是 Parse 永远不会允许任何 PFUser 的非唯一电子邮件地址,因此您不必编写代码来担心这一点。如果你想要的话,只需担心电子邮件地址验证,然后担心如果 Parse 返回错误则显示警报。

var user = PFUser.currentUser()
user.setValue(newEmail, forKey: "Email")
user.saveInBackgroundWithBlock {
  (succeeded: Bool!, error: NSError!) -> Void in
       if error == nil {
           println "Profile Updated."
       } else {
           println "Failed"
           //present alert to user to let them know that it failed
           //ask them to try a new email address
       }
 }

关于iOS swift parse + 如何检查电子邮件是否已存在于数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31031596/

相关文章:

android - 获取ParseObject的objectId并保存

ios - 如何在 xcode 中查找与调试 View 层次结构相关的代码?

ios - Multpeer连接-检查附近是否所有对等连接,并尝试重新连接

arrays - 在字典中创建键/值对时,Swift 强制将 Bool 强制转换为 Int 错误

ios - 我应该为 UTTypeImage 导入什么库,它是 iOS 15 中 kUTTypeImage 的替代品?

ios - 在 tableView 中加载 .gif

ios - 解析崩溃报告 1.9.2 不工作

java - 无法启动 Activity ComponentInfo - 二进制 XML 文件行

ios - Goertzel算法给出无限结果

ios - 通过RESTful-Http与iPhone App的Web服务进行通信的最佳方法是什么