2016-04-23 13 views
0

Parse PFUser()オブジェクトとerror_messagesの文字列を持つユーザークラスを作成しました。Swiftはサインアップ時にエラーメッセージを表示しません

ユーザクラスでは、PFUserオブジェクトを使用しsignUpInBackgroundWithBlock()を実行するサインアップ関数です。

この関数では、PFUserからエラーメッセージを戻してUserオブジェクトのerror_message文字列を設定するだけでなく、エラーが発生したことをメインビューコントローラに通知するフラグを設定する必要があります。

しかし、[email protected]の代わりにaaaa.comなどの不適切な電子メール形式が入力された場合など、エラーが発生すると関数は実行を終了しません。この関数は返されずフラグを設定しませんPFUserから渡されたエラーメッセージはコンソールウィンドウに表示されます。

私は今、ユーザークラスでフラグとエラーメッセージを設定するために想像できるすべてを試してみましたが、わかりません。ここ

ここクラスコード

class User { 
var user_db_obj = PFUser() 
var error_message = "Please try again later" 
//var user_name: String 
//var pass_word: String 


//Constructor for User object 
init(user: String, pass: String){ 
    user_db_obj.username = user 
    user_db_obj.email = user 
    user_db_obj.password = pass 
} 


//This function signs a user up to the database 
func signUp() -> Bool { 
    var error_in_sign_up: Bool = true 

    user_db_obj.signUpInBackgroundWithBlock {(succeeded: Bool?, error: NSError?) -> Void in 

     //stop spinner and allow interaction events from user 
     activityIndicator.stopAnimating() 
     UIApplication.sharedApplication().endIgnoringInteractionEvents() 

     if error == nil{ 
      error_in_sign_up = false 
      //sign up successful 
     } 
     else{ 
      let error_string = error!.userInfo["error"] as? String 
      self.error_message = error_string! 
     } 
    } 
    if error_in_sign_up == true{ 
     return false 
    } 
    else{ 
     return true 
    } 
} 

あるUserクラスからサインアップ関数を呼び出すビュー・コントローラ・コードです。

//Action for signup button 
@available(iOS 8.0, *) 
@IBAction func signup_btn(sender: AnyObject) { 

    if email_tf.text!.isEmpty || pass_tf.text!.isEmpty { 
     //if email or password field blank display error message 
     displayAlert("Error in form", msg: "Please enter a username and password") 
    } 

    else{ //perform actual signup/login if email and password supplied 

     //Display spinner while database interaction occuring and ignore user interactions as well 
     activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50)) 
     activityIndicator.center = self.view.center 
     activityIndicator.hidesWhenStopped = true 
     activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray 
     view.addSubview(activityIndicator) 
     activityIndicator.startAnimating() 
     UIApplication.sharedApplication().beginIgnoringInteractionEvents() 

     let theUser = User(user: email_tf.text!, pass: pass_tf.text!) 

     //sign up 
     if signup_mode == true{ 
      if theUser.signUp() == false{ 
       displayAlert("Failed SignUp", msg: theUser.error_message) 
      } 
     } 

     //login 
     else{ 
      if theUser.login() == false{ 
       displayAlert("Failed Login", msg: theUser.error_message) 
      } 
     } 
    } 

} 

答えて

0

問題は、あなたがこの機能を維持したい場合は... something like thisを、それが他のViewControllerに成功しているか、いないとき聞き、その後通知を登録しなければならないだろう、mainthread上でその機能signUpInBackgroundWithBlock doesntの実行であります

関連する問題