2017-03-04 15 views
0

私はデバッグやエラーの発見にはあまり適していません。だから、私のアプリは、基本的には、 "呼び出し"と呼ばれる通知のアクションが押されると警告がポップアップし、通知をスケジューリングするときに元々UITextFieldに入れた番号を呼び出します。何らかの理由でアクションが私にアプリをもたらすと、私はアラートを受け取ることもなく、Thread 1: EXC_BREAKPOINTのエラーが表示されます。どんな助けも素晴らしいだろう:)ありがとう。私のViewControllerのサブクラスではアラートがポップアップしようとすると、スレッド1:EXC_BREAKPOINTが表示されるのはなぜですか?

func showAlert(title: String, message : String, buttonTitle1: String, buttonTitle2: String,window: UIWindow){ 

    // create the alert 
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert) 

    // add the actions (buttons) 
    alert.addAction(UIAlertAction(title: buttonTitle1, style: UIAlertActionStyle.default, handler: { action in 
     if let url = URL(string: "tel://\(self.phoneNumber.text)") { 
      UIApplication.shared.open(url, options: [:]) 
     } 
    })) 

    alert.addAction(UIAlertAction(title: buttonTitle2, style: UIAlertActionStyle.cancel, handler: nil))  

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

//Main Stuff 
var window: UIWindow? 

とのViewController拡張子:

extension ViewController: UNUserNotificationCenterDelegate { 
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { 

     if response.actionIdentifier == "call" { 
      self.showAlert(title: "Enter Call", message: "Are you sure?", buttonTitle1: "Go", buttonTitle2: "Cancel", window: self.window!) 
     } 
    } 
} 
+0

問題を編集して問題に関連していないコードを削除してください。そして、エラーを引き起こす正確な行を指摘してください。 – rmaddy

+0

@rmaddyがコードを更新しました – krish

+0

ブレークポイントを設定しましたか?マージンに青い旗を探してください。 – Paulw11

答えて

0

予想外のブレークポイントをオフにするには、あなたがに行くことができます。ここに私の問題の可能性が高いから来ているコードがあります「ブレークポイントナビゲータ」。

Breakpoint Navigator

と私しばらく:あなたのXcodeのウィンドウの左側に

、あなたは(それはこのスクリーンショットの左上にある赤い円です)台形のようなアイコンが表示されます単に私のスクリーンショットに1つのブレークポイントが設定されていれば、あなたのプロジェクトにブレークポイントが設定されている可能性があります。青いフラグを切り替えると、ブレークポイントは無効になります。そして、そのフラグをドラッグして列から引き離すと、ブレークポイントが削除されます。

また、コントロールキーを押しながらフラグをクリックすると、同じことをするためのポップアップメニューが表示されます。

最後に、「無効化」と「有効化」の間でメニューを切り替えることができるXcodeの「デバッグ」メニューに「ブレークポイントの無効化」メニューオプションがあります。

+0

私のコードにブレークポイントはありません – krish

0

メインスレッド外でUIアクティビティを開始しているため、クラッシュする可能性があります。 DispatchQueueでUIAlert呼び出しを次のようにラップしてみてください。

func showAlert(title: String, message : String, buttonTitle1: String, buttonTitle2: String,window: UIWindow){ 

    DispatchQueue.main.async { 

    // create the alert 
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert) 

    // add the actions (buttons) 
    alert.addAction(UIAlertAction(title: buttonTitle1, style: UIAlertActionStyle.default, handler: { action in 
     if let url = URL(string: "tel://\(self.phoneNumber.text)") { 
      UIApplication.shared.open(url, options: [:]) 
     } 
    })) 

    alert.addAction(UIAlertAction(title: buttonTitle2, style: UIAlertActionStyle.cancel, handler: nil))  

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

あなたの応答に感謝します!私はそれを使用しようとしたが、エラーはまだそこにある:( – krish

関連する問題