2017-09-03 11 views
0

パスワードが一致すると警告メッセージを表示しようとしています。Alert - libC++ abi.dylib:NSException型のキャッチされていない例外で終了する

1)Webサービスが呼び出され、パスワード

2)フローがdisplayAlert関数が呼び出される

if(userPasswd == sysPasswd) 
    { 
     displayAlert(userMessage: "Welcome! You have been authenticated") 
     return 
    } 

パスワードで試合に関連する場合の条件を入力を返します。すべてが非常にうまく機能します首尾:

func displayAlert(userMessage: String) 
    { 
    // create the alert 
    let myAlert = UIAlertController(title: "Alert", message: userMessage, preferredStyle: UIAlertControllerStyle.alert) 

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

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

は、最後の文が実行されると、このエラーが発生します

libc++abi.dylib: terminating with uncaught exception of type NSException 

どうしてですか?私はスイフトの初心者であり、まだロープを学んでいます。黄旗などはありません。

+0

ネットワークメソッドが返ってきたときに 'self'が存在することは確かですか? – the4kman

+0

正確なエラーメッセージを表示するには、デバッガで例外ブレークポイントを設定します。 –

+0

アラートを表示している間、あなたはメインスレッドにいますか?私はあなたがないとは思わない.. –

答えて

0

ユーザインターフェイス要素は、メインスレッドでのみ使用できます。 UIをバックグラウンドスレッドから更新しようとする場合は、DispatchQueue.main.asyncへの呼び出しでUI呼び出しをラップする必要があります。

func displayAlert() { 
    DispatchQueue.main.async { 
     let myAlert = UIAlertController(etc...) 
     ... 
    } 
} 
+0

ありがとう。とった。 – coderatlarge

関連する問題