を使用して、既存の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()
}
}
}
をユーザがいない場合でもしかし、何らかの理由で、それ以外が呼び出されることはありません。呼び出しの最初の部分は機能し、ユーザーがデータベースに既にロードされているときを識別できます。 提案がありますか?
2つのこと:ユーザーがサインアップしたとき(ユーザー名や電子メールが他のアカウントと一致するかどうかをチェックする)、One - Parseが自動的に行います。 2つ - 私は実際にこの結果の問題でもプレイしてきました。クエリが送信され、エラー== nilとオブジェクトが返された場合、Swiftは問題は発生していないと考えます。私は得られる結果は、その電子メールアドレスが([])である既存のユーザーではないと信じています。ですから、結果==([])か== nilかどうかを確認する必要があると思います。私はちょうどそれを検出するために周りに再生される結果は貴重な情報を含んでいません。 –
私は組み込み関数を認識しています。問題は、いくつかのView Controllerでユーザー情報を収集していることです。 –
私は実際に同じことをする!最初のViewControllerで、ユーザーのユーザー名とパスワード(およびパスワードの確認)を収集し、そのデータをParseに送信します。次に、そのユーザーのデータを解析するためにデータを保存するときは、PFUser.currentUser()!。saveInBackgroundを呼び出すと、電子メールが別のアカウントで使用されていないことを確認します。そうでない場合は、成功== trueとなり、作成したばかりのユーザーのアカウントに保存されます。 –