2016-07-11 5 views
1

Я хотел перейти к использованию Xcode 7.3.1 и конвертировать мой код, но я сталкиваюсь какие-то проблемы здесь, это то, как я использовал, чтобы использовать его в Swift 1.1, но я получаю сообщение об ошибке:Невозможно преобразовать значение типа '([AnyObject] !, NSError!) -> Void', чтобы ожидать типа аргумента 'CLGeocodeCompletionHandler'

Cannot convert value of type '([AnyObject]!, NSError!) -> Void' to expect argument type 'CLGeocodeCompletionHandler' (aka '(Optional>, Optional)->()'):

Вот мой код:

private func geoCodeAddress(address:NSString){ 

    let geocoder = CLGeocoder() 
    geocoder.geocodeAddressString(address as String, completionHandler: {(place marks: [AnyObject]!, error: NSError!) -> Void in ---> Error //Cannot convert value of type '([AnyObject]!, NSError!) -> Void' to expect argument type 'CLGeocodeCompletionHandler' (aka '(Optional<Array<CLPlacemark>>, Optional<NSError>)->()') 

     if (error != nil) {     
      self.geocodingCompletionHandler!(gecodeInfo:nil,placemark:nil,error: error.localizedDescription)     
     } 
     else{ 

      if let placemark = placemarks?[0] as? CLPlacemark { 

       var address = AddressParser() 
       address.parseAppleLocationData(placemark) 
       let addressDict = address.getAddressDictionary() 
       self.geocodingCompletionHandler!(gecodeInfo: addressDict,placemark:placemark,error: nil) 
      } 
      else { 
       self.geocodingCompletionHandler!(gecodeInfo: nil,placemark:nil,error: "invalid address: \(address)")      
      } 
     } 
    }) 
} 

ответ

1

как сказано в сообщении об ошибке, CLGeocodeCompletionHandler возвращает необязательный не конкретный объект, поэтому просто измените код завершенияHandler на

geocoder.geocodeAddressString(address, completionHandler: {(placemarks: [CLPlacemark]?, error: NSError?) -> Void in 

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

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