2016-09-29 73 views
0

我最近開始學習迅速,現在已經採取下一步製作我自己的地圖。我已經成功地製作了一個mapkit應用程序,現在我正在嘗試使用mapbox的運氣,因爲我喜歡它的設計功能。參數類型'[MGLPointAnnotation]'不符合期望的類型'MGLAnnotation'

我已經建立了一個字典,它包含我的位置數據,然後我做了一個循環,它將數據添加到我的地圖。不過我現在卡住了,我得到了以下錯誤:

「參數類型‘[MGLPointAnnotation]’不符合預期型‘MGLAnnotation’

發生這種情況時,我試圖用我的字典mapView.addAnnotation 。我到目前爲止已經學會了解開字典中的值,但是當我通過編寫mapView.addAnnotation(註釋爲!MGLAnnotation)強制解包時,我的應用崩潰了。在正確的方向嗎?我不是在尋找一個修補程序,但更多的是在找出我錯誤的地方。非常感謝!

下面是代碼:

let locations = [ 
     ["name" : "Apple Inc.", 
     "latitude" : 37.33187, 
     "longitude" : -122.02951, 
     "mediaURL" : "http://www.apple.com"], 
     ["name" : "BJ's Restaurant & Brewhouse", 
     "latitude" : 37.33131, 
     "longitude" : -122.03175, 
     "mediaURL" : "http://www.bjsrestaurants.com"] 
    ] 

    var annotations = [MGLPointAnnotation]() 

    for dictionary in locations { 
     let latitude = CLLocationDegrees(dictionary["latitude"] as! Double) 
     let longitude = CLLocationDegrees(dictionary["longitude"] as! Double) 
     let coordinate = CLLocationCoordinate2D(latitude: latitude, longitude: longitude) 
     let name = dictionary["name"] as! String 
     let discription = dictionary["mediaURL"] as! String 
     let annotation = MGLPointAnnotation() 
     annotation.coordinate = coordinate 
     annotation.title = "\(name)" 
     annotation.subtitle = "\(discription)" 
     annotations.append(annotation) 
    } 

mapView.addAnnotation(annotations as! MGLAnnotation) 
+0

我仍然遇到此問題。如果有人有解決方案,或只是一個大方向,我可以找到更多的信息,我真的很感激它! – MarkAnon

回答

0

您正在嘗試投的東西陣列到另一個單個對象... annotations是一個數組,而MGLAnnotation是一個單獨的對象。

因此改變 mapView.addAnnotation(annotations as! MGLAnnotation)mapView.addAnnotation(annotations as! [MGLAnnotation])

這應該刪除你的錯誤......不過你也使用該方法addAnnotation這是預期只有1對象作爲參數。所以請嘗試: mapView.addAnnotation(annotations[0])

注意:我的第一個解決方案只是演示解決方案的錯誤 - 它仍然不會工作,因爲「期待只有1個對象」的情況。

希望這有助於解釋一些事情:)

相關問題