2017-12-27 1400 views
0

即時通訊使用ABCreateStringWithAddressDictionary建立一個地址,但即時通訊有問題,因爲我試過使用cnpostaladressformatter但有一些錯誤。你能告訴我如何使用cnpostaladressformatter來升級下面的代碼。ABCreateStringWithAddressDictionary棄用

if let addressDic = placemark.addressDictionary { 
     if let lines = addressDic["FormattedAddressLines"] as? [String] { 
      return lines.joined(separator: " • ") 
     } else { 
      // fallback 
      return ABCreateStringWithAddressDictionary(addressDic, true) 
     } 
    } else { 
     return "\(coordinate.latitude), \(coordinate.longitude)" 
    } 
+0

對我來說,你必須創建一個CNPostalAddress對象並從你的addressDic中填充它的屬性(城市,州等)。然後你可以使用CNPostalAddressFormatter中的「string(from)」方法。 – ghostatron

+0

fwiw,CNContact框架在iOS 9中被添加,比AB的東西更友好,這就是爲什麼你會看到使用棄用警告的原因。 AB代碼你有。 – ghostatron

+0

@ghostatron你可以告訴我如何解決它,這是我的問題,現在 – john

回答

0

要使用CNPostalAddressFormatter,您需要傳遞一個CNPostalAddress。要創建一個CNPostalAddress,您真正需要使用CNMutablePostalAddress:

func printMiamiFL() 
{ 
    let theAddress = CNMutablePostalAddress() 
    theAddress.city = "Miami" 
    theAddress.state = "FL" 
    let formatter = CNPostalAddressFormatter() 
    let addressString = formatter.string(from: theAddress) 
    print(addressString) 
} 

所以,你需要創建一個地址對象,並從你的字典用數據填充它,然後事情應該很好地工作。