我試圖通過CLLocation
結構與reverse ...定義城市名稱...方法請求CLGeocoder
對象,但我不知道如何設置超時?如果沒有互聯網連接請求時間可能需要大約30秒 - 它太長了...CLGeocoder如何設置超時?
8
A
回答
2
沒有任何內置的功能來處理這個,我知道。我已經開始使用以下解決方案。我很抱歉它在Swift中,我不會說流利的Objective-C。
這會給你2秒的超時
func myLookupFunction(location: CLLocation)
{
let timer = NSTimer(timeInterval: 2, target: self, selector: "timeout:", userInfo: nil, repeats: false);
geocoder.reverseGeocodeLocation(location){
(placemarks, error) in
if(error != nil){
//execute your error handling
}
else
{
//execute your happy path
}
}
NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSDefaultRunLoopMode)
}
func timeout(timer: NSTimer)
{
if(self.geocoder.geocoding)
{
geocoder.cancelGeocode();
}
}
超時火災後,您的回調將被執行,並且錯誤路徑與被調用。
你會得到一個錯誤與細節:
- 碼= 10
- 本地化說明(英文)=操作無法完成。 (kCLErrorDomain錯誤10.)
希望這有助於。
0
@ JTango18答案斯威夫特3:
func myLookupFunction(location: CLLocation)
{
let timer = Timer(timeInterval: 2, target: self, selector: #selector(self.timeout), userInfo: nil, repeats: false);
geocoder.reverseGeocodeLocation(location){
(placemarks, error) in
if(error != nil){
//execute your error handling
}
else
{
//execute your happy path
}
}
RunLoop.current.add(timer, forMode: RunLoopMode.defaultRunLoopMode)
}
func timeout()
{
if (geocoder.isGeocoding){
geocoder.cancelGeocode()
}
}
相關問題
- 1. android - 如何設置超時
- 2. 如何設置ajax超時?
- 3. 如何設置IHttpAsyncHandler超時?
- 4. Libtorrent如何設置超時時間?
- 5. 如何設置Socket.ConnectAsync的超時時間?
- 6. 如何設置ProxyAgent的超時時間?
- 7. 如何爲PhantomJS設置超時時間?
- 8. 如何設置OCILogon2的超時時間?
- 9. 超時設置
- 10. 設置超時?
- 11. 如何設置AsyncTask執行超時?
- 12. 如何將超時設置爲JSONP?
- 13. 如何在socket_read中設置超時
- 14. Silverlight的WCF「slsvcutil.exe」 - 如何設置超時
- 15. 如何設置連接超時
- 16. 如何在rails UJS中設置超時?
- 17. 如何設置wget超時參數?
- 18. 如何在javascript中設置ajax超時?
- 19. 如何設置超時到MFC線程
- 20. 如何使用設計配置超時?
- 21. 如何設置$ .getJSON超時無限期
- 22. 如何爲SOAP調用設置超時
- 23. 如何設置會話的超時值
- 24. 如何設置savon默認超時值
- 25. 如何設置InputStream.read的讀取超時?
- 26. 如何設置http超時使用asp?
- 27. 如何設置屏幕交易超時
- 28. flex 3:netconnection - 如何設置超時?
- 29. 如何在node.js中設置超時值?
- 30. XDocument.Load(string uri)如何設置超時?