2017-03-04 45 views
0

我不太擅長調試並找出錯誤。所以我的應用程序基本上有一個通知,當按下「Call」通知的操作時,會彈出一個警報,並在調度通知時調用最初放在UITextField中的號碼。當動作由於某種原因將應用程序帶入應用程序時,我甚至不會收到警報,並且彈出一個「Thread 1: EXC_BREAKPOINT」錯誤。任何幫助將是真棒:)謝謝。這裏是我的代碼,其中的問題很可能是來自何處:爲什麼有線程1:EXC_BREAKPOINT當我的警報嘗試彈出?

在我的ViewController子類:

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? 

而且一個視圖控制器擴展:

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

要關閉意外斷點,你可以去「斷點導航器」。

伴隨您的Xcode窗口的左側,你會看到一個類似於梯形(它在這個畫面的左上角紅色圓圈)的圖標:

Breakpoint Navigator

雖然我只需在我的屏幕截圖中設置一個斷點,您的項目中可能會有更多斷點(無意)。如果切換藍色標誌,斷點將被禁用。而且你可以將該標誌從列中拖出來,並且斷點將被刪除。

您也可以在按住控制鍵的同時單擊該標誌,您將看到一個彈出式菜單,允許您執行相同的操作。

最後,在Xcode的「Debug」菜單中有一個「Deactivate Breakpoints」菜單選項,您可以在其中切換菜單「Deactivate」和「Activate」。

+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

相關問題