Обработка определенных ошибок в Parse

Я пытаюсь создать определенные события, когда определенные коды ошибок происходят в моей программе. Например, если есть код ошибки 200, я должен сообщить пользователю, что он пропустил поле имени пользователя. Или для кода ошибки 125, я должен сообщить им, что они не ввели действительный адрес электронной почты при создании учетной записи. Как мне нацелить эти коды ошибок конкретно? Я пробовал приведенный ниже код безуспешно, что я делаю не так и возможно ли это?

if error.code == 125 {
        var invalidEmail:UIAlertView = UIAlertView(title: Please try again, message: "That does not look like a real email address. Please enter a real one.", delegate: self, cancelButtonTitle: "Try again")
        invalidEmail.show()
    }

Ошибка, которую сообщает xCode, заключается в том, что у меня есть неразрешенный идентификатор "ошибка". Существует пример этого в файле проекта разборщика AppDelegate.swift, который вызывает следующий код, и кажется, что он работает отлично.

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
    if error.code == 3010 {
        println("Push notifications are not supported in the iOS Simulator.")
    } else {
        println("application:didFailToRegisterForRemoteNotificationsWithError: %@", error)
    }
} 

Мой код

@IBAction func signupTapped(sender: AnyObject) {

    let fullname = fullnameField.text
    let email = emailField.text
    let username = usernameField.text
    let password = passwordField.text

    var user = PFUser()
    user.username = username
    user.password = password
    user.email = email
    // other fields can be set just like with PFObject
    user["fullname"] = fullname

    if error.code == 125 {
        let alert = UIAlertController(title: "Please try again", message: "That does not look like a valid email address.", preferedStyle: .Alert)
        alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
        presentViewController(alert, animated: true)
    }

    if fullname.isEmpty || email.isEmpty || username.isEmpty || password.isEmpty {
        let emptyFieldsError:UIAlertView = UIAlertView(title: "Please try again", message: "Please fill out all the fields so that we can create your account.", delegate: self, cancelButtonTitle: "Try again")
        emptyFieldsError.show()
    }

    user.signUpInBackgroundWithBlock {
        (succeeded: Bool, error: NSError?) -> Void in
        if let error = error {
            let errorString = error.userInfo?["error"] as? NSString
            // Show the errorString somewhere and let the user try again.
        } else {
            // Hooray! Let them use the app now.
        }
    }
}

2 ответа

Решение

Здесь нет error определил, где у вас есть код. Вы можете только ссылаться error изнутри области, в которой он существует.

user.signUpInBackgroundWithBlock {
    (succeeded: Bool, error: NSError?) -> Void in
    if let error = error {
        let errorString = error.userInfo?["error"] as? NSString
        // PUT YOUR ERROR HANDLING CODE HERE
    } else {

    }
}

Как уже указывал @Larme, UIAlertView устарела, поэтому вы должны использовать UIAlertController:

if error.code == 125 {
    let alert = UIAlertController(title: "Please try again", message: "That does not look like a valid email address.", preferedStyle: .Alert)
    alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
    presentViewController(alert, animated: true)
}
Другие вопросы по тегам