2013-02-26 50 views
1

當試圖反向地理的位置,如果網絡不可用我看到奇怪的結果:CLGeocoder reverseGeocodeLocation結果時,沒有互聯網連接可用

  • 看到的iOS 5.0.1
  • 飛行模式

    [geocoder reverseGeocodeLocation:whatever completionHandler:^(NSArray *placemarks, NSError *error) { 
    if (error) 
    { 
        // Alert(@"No Internet connection")!; 
    
        // I should get a kCLErrorNetwork, but I get a kCLErrorGeocodeFoundPartialResult 
        // with a placemark array containing a CLPlacemark * 
        // with only a latitude and longitude (the ones I entered)... 
    } 
    else 
    { 
        // ... 
    } 
    

這不是記錄;至少我找不到它。

這本身並不是一個大問題,因爲我不能指望它能正確地將地址解析爲沒有網絡的地址,但它阻止了我向用戶顯示信息消息。

+0

我在iOS 5.1.1和iOS 6.2.1上試過並得到'kCLErrorNetwork',所以他們顯然修復/改變了它。 – Rob 2013-02-26 15:32:56

+0

Thx爲你的嘗試;時間更新,然後! – etienne 2013-02-26 15:35:07

回答

0

這是iOS 5.0.x的行爲。在5.1和更高版本中,它會變成kCLErrorNetwork,就像您預期的那樣。如果從https://stackoverflow.com/a/5337804/1271826使用宏理論上你可以這樣做:

[geocoder reverseGeocodeLocation:whatever completionHandler:^(NSArray *placemarks, NSError *error) { 

    if (error) 
    { 
     if (error.code == kCLErrorNetwork || (error.code == kCLErrorGeocodeFoundPartialResult && SYSTEM_VERSION_LESS_THAN(@"5.1"))) 
     { 
      Alert(@"No Internet connection!"); 
     } 
    } 
    else 
    { 
     // ... 
    } 
}]; 

這樣一來,不管是什麼版本的iOS用戶運行的是(你會處理網絡錯誤,雖然,很明顯,只有5.0和更高版本,因爲在iOS 5.0中引入了CLGeocoder)。

相關問題