2016-11-04 85 views
0

我得到了下面的代碼,導致一個異常,我不知道爲什麼。一旦XCode中發生異常,我無法繼續找出異常是什麼 - 我的意思是通常您可以在XCode中繼續執行,並且可以檢查調用堆棧以查看異常的原因,但在這種情況下,當我點擊繼續程序執行按鈕時,它只是不斷地粘在屏幕截圖中的特定行上。異常試圖對地址進行地址解析

let geoCoder = CLGeocoder() 
geoCoder.geocodeAddressString("Infinite Loop,Cupertino,California", completionHandler: {(placemarks: [CLPlacemark]?, error: NSError?) -> Void in 
    print("WTF") 
} as! CLGeocodeCompletionHandler) 

enter image description here

該項目與MapKit框架相連。

+0

嘗試按 「繼續」 的一對夫婦的時代。然後你可能會失去這個斷點(這一點並不重要,因爲你已經知道它發生的地方),但是你有很好的機會在日誌中看到哪種類型的異常。 然後從那裏開始或添加stacktrace等到您的問題。 –

+0

我試過點擊繼續幾十次,它不會超越那條線,所以我無法獲得有用的堆棧跟蹤。 – Gruntcakes

+0

看看設置「Break on All Exceptions」會發生什麼 –

回答

0

你的語法是錯誤的。你不應該試圖強制施放任何東西。假設斯威夫特3,您需要:

let geoCoder = CLGeocoder() 
geoCoder.geocodeAddressString("Infinite Loop,Cupertino,California", completionHandler: { (placemark: [CLPlacemark]?, error: Error?) -> Void in 
    // do stuff 
}) 

,甚至更簡單:

let geoCoder = CLGeocoder() 
geoCoder.geocodeAddressString("Infinite Loop,Cupertino,California") { (placemark: [CLPlacemark]?, error: Error?) -> Void in 
    // do stuff 
} 
+0

這就是Swift不斷髮展的問題,我從教程中複製/粘貼了代碼,它是XCode本身添加了「as!CLGeocodeCompletionHandler」,並且XCode沒有注意到NSError現在應該是錯誤 – Gruntcakes

+0

使用'錯誤'是用於Swift 3.使用'NSError'用於Swift 2. – rmaddy

+0

是的,我知道,謝謝。但是當複製/粘貼代碼時很容易錯過這種事情,我期望XCode本身應該注意到。 – Gruntcakes