Ios ABCreateStringWithAddressDictionary已弃用

Ios ABCreateStringWithAddressDictionary已弃用,ios,iphone,swift,xcode,swift4,Ios,Iphone,Swift,Xcode,Swift4,我使用ABCreateStringWithAddressDictionary构建地址,但我遇到了一个问题,因为我尝试使用CpostalAddressFormatter,但出现了一些错误。你能告诉我如何使用CNPOstalAddressFormatter升级下面的代码吗 if let addressDic = placemark.addressDictionary { if let lines = addressDic["FormattedAddressLines"] as? [S

我使用ABCreateStringWithAddressDictionary构建地址,但我遇到了一个问题,因为我尝试使用CpostalAddressFormatter,但出现了一些错误。你能告诉我如何使用CNPOstalAddressFormatter升级下面的代码吗

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)"
    }

要使用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)
}

所以,您需要创建那个地址对象,并用字典中的数据填充它,然后事情就可以正常进行了。

要使用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)
}

因此,您需要创建该地址对象,并使用字典中的数据填充它,然后一切都会正常进行。

在我看来,您必须创建一个CpostalAddress对象,并从addressDic填充它的属性(城市、州等)。然后,您可以在CpostalAddressFormatter上使用“string(from)”方法。而fwiw,CNContact框架是在iOS 9中添加的,使用起来比AB更友好。这就是您看到弃用警告的原因使用您拥有的AB代码。@ghostatron您能告诉我如何修复它吗?这是我的问题,现在在我看来,您必须创建一个CNPostalAddress对象,并从您的addressDic填充它的属性(城市、州等)。然后您可以使用“字符串(从”方法。和fwiw,CNContact框架是在iOS 9中添加的,使用起来比AB更友好。这就是为什么您在AB代码中看到弃用警告。@ghostatron您能告诉我如何修复它吗,这是我现在的问题