2013-10-18 15 views
8

都市名をCLLocation構造体で逆に定義しようとしています... CLGeocoderオブジェクトへのメソッド要求ですが、タイムアウトの設定方法がわかりません。インターネットに接続できない場合は、約30秒かかることがあります。これは長すぎます...CLGeocoderタイムアウトを設定するには?

答えて

2

これを処理するための機能はありません。私は次のソリューションを使い始めました。私は流暢なObjective-Cを話せません。

これはあなたのタイムアウト火災後

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(); 
    } 
} 

を2秒のタイムアウトを与えるだろう、あなたのコールバックが実行され、エラーパスを呼び出すことで。

あなたは細部にエラーが発生します:

  • コード= 10
  • ローカライズ説明(英語)は、操作を完了できませんでした=。 (kCLErrorDomainエラー10)

希望すると便利です。スウィフト3でJTango18の答え@

0

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() 
    } 
} 
関連する問題