簡體   English   中英

MKMapItem地標在swift中不可用

[英]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循環沒有明確說resMKMapItem類型(或者response.mapItems實際上是[MKMapItem] )。

因此res被視為AnyObject一個實例,它沒有被定義為具有placemark屬性。

這就是為什么你得到編譯器錯誤'placemark' is unavailable...


要解決此問題, MKMapItem resMKMapItem ,然后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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM