ABAddressBook - Искать в Exchange AddressBook Source?

Я пытаюсь создать приложение с пользовательским интерфейсом для поиска в адресной книге. Поиск в локальной адресной книге кажется простым, но я не могу понять, как искать человека / запись в источнике адресной книги Exchange (т.е. ABSourceType == kABSourceTypeExchangeGAL). Я использую следующий код, чтобы найти источник адресной книги Exchange и запросить его, но я только когда-либо получаю пустой массив. Я понимаю, что запрос полного списка людей в адресной книге Exchange не может вернуть все записи, но я ожидаю, что некоторые запросы этого списка при запросе. Опять же, вместо этого я получаю пустой массив.

Как вы ищете контакты в источнике адресной книги Exchange?

#define CFNIL(x) if(x){CFRelease(x); x=nil;}
    //code

    ABAddressBookRef _addressbook = ABAddressBookCreate();
    CFArrayRef allSources = ABAddressBookCopyArrayOfAllSources(_addressbook);
    ABRecordRef exchangeSource;

    for(CFIndex i =0; i<CFArrayGetCount(allSources); i++)
    {
        ABRecordRef source = (ABRecordRef)CFArrayGetValueAtIndex(allSources, i);

        NSNumber *sourceTypeNumber = (NSNumber*)((CFNumberRef)ABRecordCopyValue(source, kABSourceType));
        NSString *sourceTypeName = (NSString *)((CFStringRef)ABRecordCopyValue(source, kABSourceNameProperty));

        int sourceType = [sourceTypeNumber intValue];
        if (sourceType == kABSourceTypeExchangeGAL) 
        {
            exchangeSource = source;
        }
        [sourceTypeNumber release];
        [sourceTypeName release];
    }

    if(exchangeSource)
    {
        /*
         This finds matches in the local device addressbook
        NSArray *people = (NSArray *)ABAddressBookCopyPeopleWithName(_addressbook, CFSTR("joe"));
        for(int i=0;i<[people count]; i++)
        {
            ABRecordRef person = (ABRecordRef)[people objectAtIndex:i];
            ABMultiValueRef emails = (ABMultiValueRef)ABRecordCopyValue(person, kABPersonEmailProperty);
            NSLog(@"emails: %@",emails);
            [((NSArray*)emails) release];
        }
        [people release];
         */

        //this array is always empty
        CFArrayRef search = ABAddressBookCopyArrayOfAllPeopleInSource (_addressbook,exchangeSource);
        NSLog(@"%@", search);
        CFNIL(search);
    }
    CFNIL(exchangeSource);
    CFNIL(_addressbook);

0 ответов

Другие вопросы по тегам