2015-09-18 94 views
1

我剛剛升級ray wenderlich mapkit教程到MKPlacemark的xcode 7錯誤。我仍然只是新的編碼,我不能100%確定從哪裏開始如何解決這個錯誤。我搜索,但知道利用。升級ray wenderlich mapkit教程到xcode 7錯誤mkplacemark

感謝您的任何幫助。非常感謝。

http://www.raywenderlich.com/90971/introduction-mapkit-swift-tutorial

這是我得到一個錯誤的代碼:

// annotation callout opens this mapItem in Maps app 
func mapItem() -> MKMapItem { 
    let addressDict = [String(kABPersonAddressStreetKey): self.subtitle] 
    let placemark = MKPlacemark(coordinate: self.coordinate, addressDictionary: addressDict) 

    let mapItem = MKMapItem(placemark: placemark) 
    mapItem.name = self.title 

    return mapItem 

的錯誤是:

不能調用類型「mkplacemark」初始化與列表類型的參數'coordinate:CLLocationCoordinate2D,addressDictionary:[String:String?])'

再次感謝,

特拉維斯。

回答

1

好的!

只是想通了我搜索更深!

問題是locationName是可選的,所以addressDictionary被推斷爲與初始值設定項不兼容的[String:String?]類型。但是一個[String:String]類型的字典可以工作。

所以,你可以替換此行:

let addressDictionary = [String(CNPostalAddressStreetKey): subtitle] 

有了這個:

let addressDictionary = [String(CNPostalAddressStreetKey): subtitle!] 

或者這(這相當於給字幕的實現):

let addressDictionary = [String(CNPostalAddressStreetKey): locationName] 

謝謝! !

1

你需要轉換你的字幕如AnyObject如下圖所示:

讓addressDict = [字符串(kABPersonAddressStreetKey):self.subtitle作爲! AnyObject]

,併爲您的完整代碼 「FUNC mapItem() - > MKMapItem {}」 將是:

func mapItem() -> MKMapItem { 
    let addressDict = [String(kABPersonAddressStreetKey): self.subtitle as! AnyObject] 
    let placemark = MKPlacemark(coordinate: self.coordinate, addressDictionary: addressDict) 

    let mapItem = MKMapItem(placemark: placemark) 
    mapItem.name = self.title 

    return mapItem 
    }