使用AddressBook API,如果您没有使用'ABPeoplePickerNavigationController',获取所有人列表的唯一方法似乎是通过'ABAddressBookCopyArrayOfAllPeople'。
ABPeoplePickerNavigationController选择一个人并解雇视图行为不是我需要的。相反,我想要做的是将地址簿内容加载到我自己的表视图中,然后执行一些自定义选择行为。
但有没有办法处理部分加载地址簿数据而不是整个列表来提供数据作为表的数据源?如果说地址簿包含3000个条目,那么我将所有数据复制到本地数组中 - 是否有更好的方法来实现更好的性能?
答案 0 :(得分:0)
不确定它是否最佳,但如果您想要显示表中的所有内容,则必须以某种方式对其进行“排序”, 假设您按字母顺序对其进行简单排序,那么您可以代替复制所有地址簿,只需要它返回以“a”开头的记录列表 对此的方法是我认为: CFArrayRef ABAddressBookCopyPeopleWithName( ABAddressBookRef addressBook, CFStringRef名称 ); name可以是“a *”,它将返回以a开头的所有人。 可以使用从表中多次调用此方法来避免复制我认为的所有人。
希望这有帮助, -t