2013-08-06 4 views
0

Я пытаюсь получить страну из объекта ABPerson в Cocoa.Извлечение записей из объекта ABPerson

Что я делаю:

NSString *country = [person valueForProperty:kABAddressCountryKey]; 

Я получаю это в консоли:

- [ABPerson valueForProperty: Страна] - неизвестное свойство. Это предупреждение будет отображаться только один раз за неизвестное свойство за сеанс.

Получение OrganizationName (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