iOS:使用 CNPostalAddressFormatter 显示联系人地址,并在各部分之间使用适当的分隔符(例如逗号)

Cra*_*lot 6 addressbook ios cncontact

Apple 文档建议使用CNPostalAddressFormatter将地址显示为格式化字符串,这对国际化有很大帮助。

这段代码:

let postalString = CNPostalAddressFormatter.string(from: postalAddress.value, style: .mailingAddress)
Run Code Online (Sandbox Code Playgroud)

生成John Appleseed模拟器上联系人的工作地址:

3494 Kuhl Avenue
Atlanta GA 30303
Run Code Online (Sandbox Code Playgroud)

该地址缺少城市和州之间的逗号。

CNPostalAddressFormatter 有办法插入逗号吗?该文档没有列出任何内容。

如果不是,这是否意味着您必须手动格式化每个地区的地址,并且无法用于CNPostalAddressFormatter本地化?

Hon*_*ang 1

这是我在美国地址的城市后添加“,”的代码片段。

#if canImport(Contacts)
import Contacts

public extension CLPlacemark {

  /// Get a formatted address.
  var formattedAddress: String? {
    guard let postalAddress = postalAddress else {
      return nil
    }

    let updatedPostalAddress: CNPostalAddress
    if postalAddress.isoCountryCode == "US" {
      // add "," after city name
      let mutablePostalAddress = postalAddress.mutableCopy() as! CNMutablePostalAddress
      mutablePostalAddress.city += ","
      updatedPostalAddress = mutablePostalAddress
    } else {
      updatedPostalAddress = postalAddress
    }

    return CNPostalAddressFormatter.string(from: updatedPostalAddress, style: .mailingAddress)
  }
}
#endif
Run Code Online (Sandbox Code Playgroud)