Ios 获取地址簿的索引值?
当我们知道Ios 获取地址簿的索引值?,ios,addressbook,Ios,Addressbook,当我们知道ABRecordRef和地址簿时,如何获取地址簿的索引 我正在使用: ABRecordRef ref= CFArrayGetValueAtIndex(AddressBookPeople, index); 获取给定索引处的记录引用 类似地,当已知ABRecordRef值时,如何获取记录的索引?NSArray有一种方法: - (NSUInteger)indexOfObject:(id)anObject 返回其对应数组值等于给定对象的最低索引 CFArray与NSArray进行免费桥接
ABRecordRef
和地址簿时,如何获取地址簿的索引
我正在使用:
ABRecordRef ref= CFArrayGetValueAtIndex(AddressBookPeople, index);
获取给定索引处的记录引用
类似地,当已知
ABRecordRef
值时,如何获取记录的索引?NSArray
有一种方法:
- (NSUInteger)indexOfObject:(id)anObject
返回其对应数组值等于给定对象的最低索引
CFArray
与NSArray
进行免费桥接。所以我觉得这应该行得通
int index = [(NSArray *)AddressBookPeople indexOfObject:ref];
编辑::
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
ABRecordRef ref= CFArrayGetValueAtIndex(people, 4);
NSUInteger i = [(__bridge NSArray *)people indexOfObject:(__bridge id)(ref)];
这给了我正确的索引。您还可以更正确地使用:
CFArrayGetFirstIndexOfValue
这里AddressBookPeople是CFArrayRef,这没有IndexOfoObject方法这就是为什么我说CFArrayRef是tollfree与NSArray桥接的,所以它应该工作。不过你可能需要打字。查看我的编辑。无返回的20000+记录索引600记录仅可用people=abAddressBookCopyArrayFallPeople(addressBook);NSArray*tempPeople=(u桥NSArray*)(AddressBookPeople);NSU整数i=[tempPeople indexOfObject:(uu桥id)(参考)];所以我很好奇,自己试了试。请参阅我的编辑。它对我有用。