不同国家/地区的联系地址格式

Emp*_*ack 4 iphone objective-c ipad ios

在应用程序中,我使用ABRecordRef显示联系人的详细信息.我使用密钥kABPersonAddressCityKey,kABPersonAddressStateKey,kABPersonAddressZIPKey,kABPersonAddressCountryKey.一切正常.但我不知道以哪种格式显示地址.我的意思是,如果您看到" 联系人"应用,则地址会以不同国家/地区的特定格式显示.一些例子,

我们

街道
城州ZIP
国家

印度

街道

城市PIN
国家

澳大利亚

街道
郊区州ZIP
国家

现在我不知道如何找到不同国家的格式.

1.有没有办法根据国家/国家/地区代码查找地址格式?
2.Is有没有办法,我们可以得到使用单一功能的全格式的地址,就像我们使用ABRecordCopyCompositeName()得到的全名?

sha*_*oga 6

试试这个链接 ABCreateStringWithAddressDictionary

看起来你需要使用:ABCreateStringWithAddressDictionary将返回:

从地址属性返回格式化的地址.(来自Apple)

祝好运


HAS*_*HAS 5

从iOS 9.0 / macOS 10.11 / watchOS 2.0开始,您应该改用CNPostalAddressFormatter

CNPostalAddressFormatter类格式化联系人中的邮政地址。此类处理邮政地址的国际格式。

下面的代码在Swift 3中,但是将其转换为Objc并不重要

let postalAddress = CNMutablePostalAddress()
postalAddress.street = street
postalAddress.postalCode = zipCode
postalAddress.city = city
postalAddress.state = state
postalAddress.country = country
postalAddress.isoCountryCode = countryCode

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

确保设置了ISO国家/地区代码属性,该属性用于确定地址的格式。

例:

postalAddress.street = "Main Street 1"
postalAddress.postalCode = "67067"
postalAddress.city = "Ludwigshafen"
postalAddress.state = "Rhineland-Palatinate"
postalAddress.country = "Germany"
postalAddress.isoCountryCode = "DE"
Run Code Online (Sandbox Code Playgroud)

导致这个

大街1号

67067路德维希港

德国

postalAddress.isoCountryCode = "US"
Run Code Online (Sandbox Code Playgroud)

导致

大街1号

路德维希港莱茵兰-普法尔茨67067

德国