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)
}
}
}
}