2015-09-19 8 views
0

Я пытаюсь преобразовать свое быстрое приложение 1.2 в 2.0. Я пробовал несколько исправлений, которые я нашел в Интернете, но он не работает.Swift 2.0 - Невозможно подстроить значение типа '[CLPlacemark]?'

Ошибка: Converting to Swift 2.0 - Cannot Subscript a value of type '[CLPlacemark]?'

Код:

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 

    CLGeocoder().reverseGeocodeLocation(manager.location!, completionHandler: {(placemarks, error)->Void in 

     if (error != nil) 
     { 
      print("Error: " + error!.localizedDescription) 
      return 
     } 

     if placemarks!.count > 0 
     { 
      let pm = placemarks[0] as! CLPlacemark 
      self.displayLocationInfo(pm) 
     } 
     else 
     { 
      print("Error with the data.") 
     } 
    }) 
} 

ответ

5

решаемые:

Заменить: let pm = placemarks[0] as! CLPlacemark

Для: let pm = placemarks?[0]

1

Или с обновленной безопасностью Swift 2.0:

guard let currentPlacemarks = placemarks where currentPlacemarks.count > 0 else { 
    // error handling here 
    return 
} 

guard let pm = currentPlacemarks[0] where pm is CLPlacemark else { 
    // more error handling 
    return 
} 

self.displayLocationInfo(pm) 
+0

я получил следующие ошибки, когда я попытался добавить свой код. Все мысли? : Конфликты определения с предыдущим значением. Инициализатор для условной привязки должен иметь необязательный тип, а не «CLPlacemark» – AustinTheNoob

+0

Это означает, что это необязательная и необязательная привязка не будет работать, не требуется. Google все по опциональным –

+0

. Это странно, потому что мой код точно такой же, как и у оригинального плаката, поэтому я бы подумал, что это будет падение и замена. благодаря – AustinTheNoob

Смежные вопросы