2012-06-21 36 views
3

在一個應用程序中,我使用ABRecordRef顯示聯繫人的詳細信息。我使用的鍵kABPersonAddressCityKeykABPersonAddressStateKeykABPersonAddressZIPKeykABPersonAddressCountryKey。一切正常。但我不知道用哪種格式顯示地址。我的意思是,如果您看到聯繫人應用程序,地址以不同國家的特定格式顯示。一些例子,不同國家的聯繫地址格式

美國


市州郵政編碼
國家

印度



市PIN
國家

澳大利亞


郊區國家ZIP
國家

現在我不知道如何找到格式爲不同的計數里斯。

1.有沒有辦法根據國家/地區代碼找到地址格式?
2.是否有一種方法可以使用單一功能獲得格式完整的地址,例如我們使用ABRecordCopyCompositeName()來獲取全名?

+1

的可能重複http://stackoverflow.com/問題/ 7848291 /如何對獲得格式,地址的NSString從 - addressdictiona ry – Pochi

+0

哎呀!爲什麼你們在提供獎勵之前沒有告訴我這件事? – EmptyStack

+1

因爲賞金多汁O_O,我還沒有看到你的問題。你知道你可以輸入完全你的問題標題,並遇到這個?哈哈 – Pochi

回答

5

嘗試此鏈接 ABCreateStringWithAddressDictionary

看起來你需要使用:ABCreateStringWithAddressDictionary將返回:

從地址屬性返回一個格式化的地址。 (蘋果)

好運

+0

我的天啊!謝了哥們! – EmptyStack

+0

你最受歡迎,我剛剛完成了一個地址簿應用程序,我不得不說,AdreesBook文檔非常糟糕。 – shannoga

2

從iOS的9.0/MacOS的10.11/watchOS 2.0你應該使用CNPostalAddressFormatter代替:

的CNPostalAddressFormatter類格式郵政地址的聯繫人。這個類處理郵政地址的國際格式。

下面的代碼是在斯威夫特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) 

確保您設置的ISO國家代碼屬性,這是用來確定地址的格式。

實施例:

postalAddress.street = "Main Street 1" 
postalAddress.postalCode = "67067" 
postalAddress.city = "Ludwigshafen" 
postalAddress.state = "Rhineland-Palatinate" 
postalAddress.country = "Germany" 
postalAddress.isoCountryCode = "DE" 

導致這個

大街1

67067 Ludwigshafen的

德國

postalAddress.isoCountryCode = "US" 

導致

大街1

路德維希港萊茵蘭 - 普法爾茨州67067

德國