2016-04-11 10 views
1

Wie kann ich zeigen einen Fehler als normale Nachricht:anzeigen NSError als Nachricht

Ich habe eine signin Funktion:

func signIn() { 
     PFUser.logInWithUsernameInBackground(self.usernameTextField.text!, password: self.passwordTextField.text!) { 
      (user: PFUser?, error: NSError?) -> Void in 
      if user != nil { 
       // Do stuff after successful login. 
       print("User successfully logged in: \(user)") 
       self.performSegueWithIdentifier("loginSegue", sender: nil) 
      } else { 
       // The login failed. Check error to see why. 
       print("Server reported an error: \(error)") 

       // create the alert 
       let alert = UIAlertController(title: "Error", message: "\(error)", preferredStyle: UIAlertControllerStyle.Alert) 

       // add an action (button) 
       alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)) 

       // show the alert 
       self.presentViewController(alert, animated: true, completion: nil) 
      } 
     } 
    } 

Und die UIAlertController zeigt dies dem Anwender:

enter image description here

Aber wie kann ich nur zeigen Nachricht als:

Ungültiger Benutzername/Passwort.

Ich versuchte mit error.message, aber das ist kein Befehl, und error.description funktioniert auch nicht .. Irgendwelche Vorschläge?

+0

in diesem Fall optional binding und nil coalescing operator mit .... – holex

+0

ich die Antworten nicht gelesen haben ... ich die Frage lesen. – holex

Antwort

3

einfach die localizedDescription verwenden.

let alert = UIAlertController(title: "Error", message: "\(error.localizedDescription)", preferredStyle: UIAlertControllerStyle.Alert) 

oder den Wert für die „Fehler“ Schlüssel aus dem userInfo Wörterbuch des Fehlers.

+0

Wie werde ich das optionale loswerden? Ich bekomme diese Nachricht jetzt: Optional ("Ungültiger Benutzername/Passwort".) –

+0

Versuchen Sie 'error! .localizeDescription', aber das ist gefährlich, weil Ihre App abstürzt, wenn' error' 'nil' ist. – rmaddy

+0

Ich habe das verwendet, aber immer noch den "optionalen" Text in der Fehlermeldung erhalten. Aber wenn es gefährlich ist, welche anderen Möglichkeiten habe ich? –

1

Schreiben Sie einfach

let alert = UIAlertController(title: "Error", message: "\(error!.localizedDescription)", preferredStyle: .Alert) 

Da der Fehler immer nicht ist nil, ob der Benutzer nil, können Sie es sicher auspacken können.

0

Sie können auch unten Code versuchen, die gerade nur die `localisedDescription` zeigen

let alert = UIAlertController(title: "Error", message: "\(error?.localizedDescription ?? " unknown error ")", preferredStyle: .Alert)