2013-08-06 97 views
0

我想從可可中的ABPerson對象獲取國家。從ABPerson對象檢索記錄

我要做的就是:

NSString *country = [person valueForProperty:kABAddressCountryKey]; 

我得到這個在控制檯:

- [ABPerson valueForProperty:國家 - 未知屬性。每個會話每個未知屬性只會顯示一次此警告。

獲取者單位名稱(kABOrganizationProperty),名字(kABFirstNameProperty)和lastName(kABLastNameProperty)的作品。

任何想法?

回答

0

由於密鑰kABAddressCountryKey意味着它表示一個地址的值。由於人可以有多個地址(表示爲字典),你必須循環地址獲得該國:

ABMultiValueRef addressesRef = ABRecordCopyValue(personRef, kABPersonAddressProperty); 

for (int i = 0; i < ABMultiValueGetCount(addressesRef); i++) 
{ 
    CFDictionaryRef oneAddressRef = ABMultiValueCopyValueAtIndex(addressesRef, i); 
    NSString *country = CFRetain(CFDictionaryGetValue(oneAddressRef, kABPersonAddressCountryCodeKey)); 
    // Do fancy things with country... 
    CFRelease(country); 
    CFRelease(oneAddressRef); 
} 

CFRelease(addressesRef); 

還沒有最終測試,但它應該工作的方式。另請考慮Core Foundation Memory Management

+0

謝謝你把我推向正確的方向。我在這裏也看到了蘋果文檔:https://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AddressBook/Tasks/AccessingData.html#//apple_ref/doc/uid/20001023- CJBDFIGI – Mikael