无法将类型“([AnyObject]!,NSError!)-> Void”的值转换为期望参数类型“CLGeocodeCompletionHandler”
Posted
技术标签:
【中文标题】无法将类型“([AnyObject]!,NSError!)-> Void”的值转换为期望参数类型“CLGeocodeCompletionHandler”【英文标题】:Cannot convert value of type '([AnyObject]!, NSError!) -> Void' to expect argument type 'CLGeocodeCompletionHandler' 【发布时间】:2016-07-11 08:02:29 【问题描述】:我想跳过去使用 Xcode 7.3.1 并转换我的代码,但我在这里遇到了一些问题,这就是我过去在 Swift 1.1 中使用它的方式,但我遇到了错误:
(又名“(可选>,可选)->()”):
这是我的代码:
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
返回可选的不是具体对象,因此只需将 completionHandler 代码更改为
geocoder.geocodeAddressString(address, completionHandler: (placemarks: [CLPlacemark]?, error: NSError?) -> Void in
)
【讨论】:
以上是关于无法将类型“([AnyObject]!,NSError!)-> Void”的值转换为期望参数类型“CLGeocodeCompletionHandler”的主要内容,如果未能解决你的问题,请参考以下文章
C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable
无法将类型“[PHAsset]”的值分配给类型“UIImageView!”