[英]MKMapItem placemark is unavailable in swift
我目前正在嘗試創建一個搜索欄,以用戶鍵入的方式自動填充位置。 我正在使用MKLocalSearch獲取MKLocalSearchResponse,它似乎返回我可以使用的值。 但是,要從搜索中獲取名稱,地址或坐標,需要訪問搜索響應中的MKPlacemark屬性。 當我訪問地標時,我收到錯誤:
'placemark'不可用:從iOS7及更早版本棄用的API在Swift中不可用
var request = MKLocalSearchRequest()
request.naturalLanguageQuery = searchText
//PUT HERE: check if network is on?
let localSearch: MKLocalSearch = MKLocalSearch(request: request)
localSearch.startWithCompletionHandler { (response: MKLocalSearchResponse!, error: NSError!) -> Void in
if (error == nil) {
println("searched")
for res in response.mapItems {
self.userSearch.append(res.placemark)
}
self.userSearch = response.mapItems.placemark
self.tableView?.reloadData()
} else {
println(error)
}
}
}
有沒有人知道訪問地標的解決方法?
謝謝!
response.mapItems
數組在API中聲明為[AnyObject]!
類型[AnyObject]!
。
for
循環沒有明確說res
是MKMapItem
類型(或者response.mapItems
實際上是[MKMapItem]
)。
因此res
被視為AnyObject
一個實例,它沒有被定義為具有placemark
屬性。
這就是為什么你得到編譯器錯誤'placemark' is unavailable...
要解決此問題, MKMapItem
res
為MKMapItem
,然后placemark
屬性將變為可見。
例:
for res in response.mapItems {
if let mi = res as? MKMapItem {
self.userSearch.append(mi.placemark)
}
}
for
循環之后的這一行:
self.userSearch = response.mapItems.placemark
如果userSearch
應該是一個地標數組,則沒有意義。
for
循環將地標附加到該數組,然后該行將數組設置為單個地標對象(此外, mapItems
對象甚至沒有placemark
屬性)。
最有可能刪除此行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.