首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取AddressBook的索引值?

获取AddressBook的索引值?
EN

Stack Overflow用户
提问于 2013-09-10 18:35:26
回答 2查看 137关注 0票数 0

当我们知道ABRecordRef和地址簿时,如何获得地址簿的索引?

我正在使用:

代码语言:javascript
复制
ABRecordRef ref= CFArrayGetValueAtIndex(AddressBookPeople, index);

获取给定索引处的记录引用。

类似地,当ABRecordRef值已知时,如何获得记录的索引?

EN

回答 2

Stack Overflow用户

发布于 2013-09-10 18:53:58

NSArray有一个方法:

代码语言:javascript
复制
- (NSUInteger)indexOfObject:(id)anObject 

它返回其对应的数组值等于给定对象的最低索引。

使用NSArray桥接的CFArray是免费的。所以我想这应该行得通,

代码语言:javascript
复制
int index = [(NSArray *)AddressBookPeople indexOfObject:ref];

编辑:

代码语言:javascript
复制
  ABAddressBookRef addressBook = ABAddressBookCreate();
  CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
  ABRecordRef ref= CFArrayGetValueAtIndex(people, 4);
  NSUInteger i = [(__bridge NSArray *)people indexOfObject:(__bridge id)(ref)];

这给我返回了正确的索引。

票数 0
EN

Stack Overflow用户

发布于 2013-09-10 19:31:33

您还可以更恰当地使用:

代码语言:javascript
复制
CFArrayGetFirstIndexOfValue
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18716631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档