2013-09-10 3 views
0

Как я могу получить индекс адресной книги, когда мы знаем ABRecordRef и адресную книгу?Получить значение индекса AddressBook?

Я использую:

ABRecordRef ref= CFArrayGetValueAtIndex(AddressBookPeople, index); 

, чтобы получить ссылку на запись по указанному индексу.

Аналогичным образом, как получить индекс записи, когда значение ABRecordRef известно?

ответ

0

NSArray имеет метод:

- (NSUInteger)indexOfObject:(id)anObject 

, который возвращает наименьший индекс, чей соответствующий массив значение равно заданному объекту.

CFArray является бесплатным мостом с NSArray. Так что я думаю, что это должно работать,

int index = [(NSArray *)AddressBookPeople indexOfObject:ref]; 

EDIT :::

ABAddressBookRef addressBook = ABAddressBookCreate(); 
    CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); 
    ABRecordRef ref= CFArrayGetValueAtIndex(people, 4); 
    NSUInteger i = [(__bridge NSArray *)people indexOfObject:(__bridge id)(ref)]; 

Возвращаемый мне правильный индекс.

+0

здесь AddressBookPeople является CFArrayRef, это не имеет методу indexOfObject –

+0

Вот почему я сказал, что CFArrayRef является tollfree мостиком с NSArray поэтому он должен работать. Однако вам может потребоваться приведение в соответствие с типом. См. Мое редактирование. –

+0

Нет его возврата 20000+ индекс записи 600 записей только –

0

Вы можете также более правильно использовать:

CFArrayGetFirstIndexOfValue 
Смежные вопросы