iOS快速parsing+如何检查数据库中是否已经存在电子邮件
我正在使用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将返回一个错误信息,说明电子邮件已经被使用,并且不允许singup。 事实上,它甚至提醒你我很确定。
在你的应用程序的任何其他部分,如果用户试图更新他们的电子邮件,parsing将以同样的方式工作,尽pipe没有错误的演示文稿,你将不得不照顾。
正因为如此,你不必做任何查询或任何事情。 您只需尝试更新PFUser
对象的电子邮件字段并将其保存,如果此类电子邮件地址已存在,则Parse将为您返回错误。
底线是parsing永远不会允许任何PFUser
非唯一的电子邮件地址,所以你不必写代码担心这一点。 只要担心电子邮件地址validation,如果这是你想要的,然后担心提出警报,如果parsing返回一个错误。
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 } }