2016-07-09 8 views
2

私はXcode 7.3.1を使用してコードを変換したいと思っていましたが、ここで何らかの問題に直面しています。これはSwift 1.1で使用していましたがエラーが発生しています。期待される引数の型に型 'NSMutableDictionary' '[文字列:ANYOBJECT]?':事前に'NSMutableDictionary'型の値を期待される引数型 '[String:AnyObject]に変換できません?'

private func getPlacemark() -> CLPlacemark 
    { 

    var addressDict = NSMutableDictionary() 
    var formattedAddressArray = self.formattedAddress.componentsSeparatedByString(", ") as Array 

    let kSubAdministrativeArea = "SubAdministrativeArea" 
    let kSubLocality   = "SubLocality" 
    let kState     = "State" 
    let kStreet    = "Street" 
    let kThoroughfare   = "Thoroughfare" 
    let kFormattedAddressLines = "FormattedAddressLines" 
    let kSubThoroughfare  = "SubThoroughfare" 
    let kPostCodeExtension  = "PostCodeExtension" 
    let kCity     = "City" 
    let kZIP     = "ZIP" 
    let kCountry    = "Country" 
    let kCountryCode   = "CountryCode" 

    addressDict.setObject(self.subAdministrativeArea, forKey: kSubAdministrativeArea) 
    addressDict.setObject(self.subLocality, forKey: kSubLocality) 
    addressDict.setObject(self.administrativeAreaCode, forKey: kState) 

    addressDict.setObject(formattedAddressArray.first! as NSString, forKey: kStreet) 
    addressDict.setObject(self.thoroughfare, forKey: kThoroughfare) 
    addressDict.setObject(formattedAddressArray, forKey: kFormattedAddressLines) 
    addressDict.setObject(self.subThoroughfare, forKey: kSubThoroughfare) 
    addressDict.setObject("", forKey: kPostCodeExtension) 
    addressDict.setObject(self.locality, forKey: kCity) 


    addressDict.setObject(self.postalCode, forKey: kZIP) 
    addressDict.setObject(self.country, forKey: kCountry) 
    addressDict.setObject(self.ISOcountryCode, forKey: kCountryCode) 


    var lat = self.latitude.doubleValue 
    var lng = self.longitude.doubleValue 
    var coordinate = CLLocationCoordinate2D(latitude: lat, longitude: lng) 

    var placemark = MKPlacemark(coordinate: coordinate, addressDictionary: addressDict) <-- getting error //Cannot convert value of type 'NSMutableDictionary' to expected argument type '[String: AnyObject]?' 


    return (placemark as CLPlacemark) 
} 

ありがとう!

答えて

1

可変性NSDictionaryとは異なり、可変性NSMutableDictionaryはSwiftに関連せず、架橋もキャストもできません。

これらの問題を回避するために、単純なルールがあります:スウィフトの使用において

常にスウィフトネイティブコレクション型可能な限りは。

var addressDict = [String:AnyObject]() 
... 
addressDict[kSubAdministrativeArea] = self.subAdministrativeArea 
... 
+0

ありがとう:)それは働いた! – niks290192

関連する問題