回答
致电ABAddressBookCopyArrayOfAllPeople()
获取地址簿中所有人员记录的数组。然后按照the documentation:
要排序的人一个数组,功能ABPersonComparePeopleByName作为比较和类型ABPersonSortOrdering的情况下使用该功能CFArraySortValues。用户希望的排序顺序,由ABPersonGetSortOrdering返回,通常是首选的上下文。
下面的代码清单显示排序整个地址簿数据库的例子:
ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); CFMutableArrayRef peopleMutable = CFArrayCreateMutableCopy( kCFAllocatorDefault, CFArrayGetCount(people), people ); CFArraySortValues( peopleMutable, CFRangeMake(0, CFArrayGetCount(peopleMutable)), (CFComparatorFunction) ABPersonComparePeopleByName, (void*) ABPersonGetSortOrdering() ); CFRelease(addressBook); CFRelease(people); CFRelease(peopleMutable);
如何: - 在ABPerson.h
宣布
ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering
我使用上面的代码(来自被批准的答案)从iPhone复制地址簿,并且还使用ABPersonComparePeopleByName
用于排序地址簿。但是,当iPhone的国际语言不同时,发现它对同一地址簿的排序结果不同。假设根据不同的标准对不同的语言进行排序是合理的。因此,在我们的项目中,我们有“en.lproj”..“zh-hant.lproj”...“ja.lproj”,在NSCalendar
中,我们也有“locale”设置。所以我正在考虑如何设置ABPersonComparePeopleByName
的标准并询问Apple。一个非常有用的回复:“一个排序是不可预测的”。
苹果的答复的有关部分如下:
其实,这是正常的行为。用不同的语言排序实际上是一个非常复杂的问题,用户的期望根据语言/位置而有很大的差异。老实说,你最好的选择是调整你的期望,并假定排序顺序是不可预测的。任何其他方法很可能会惹恼和混淆许多国际用户。
-Kevin
凯文·埃利奥特,DTS工程师,kevin_elliott @苹果,玉米
请添加一个链接到这个职位以及。 – tipycalFlow 2013-05-29 10:52:50
- 1. 如何在listview中对手机通讯录进行排序?
- 2. 如何在iPhone应用程序中进行点对点通讯?
- 3. objective-c iPhone通讯录:kABPersonAddressStreetKey
- 4. 如何与tor网络进行通讯
- 5. iPhone TCP通讯
- 6. 如何使用ABAddressBook删除iPhone通讯录中的记录?
- 7. 让用户对记录进行排序?
- 8. iPhone:如何使用NSDate对日期进行排序?
- 9. 如何使用iphone中的数字对数组进行排序?
- 10. 如何通过其对象属性对ArrayList进行排序?
- 11. 如何通过NSString属性对对象数组进行排序
- 12. 如何对普通对的集合进行排序
- 13. 如何通过派生计算对对象进行排序?
- 14. 如何通过element.name对javascript对象数组进行排序
- 15. 如何通过枚举值对对象进行排序?
- 16. 通过DisplayValue对Silverlight DataGridComboBoxColumn进行排序
- 17. 通过多列对Slickgrid进行排序?
- 18. iPhone的多线程操作通讯录
- 19. iPhone通讯录外部更改回电
- 20. 如何在c程序中进行串口通讯?
- 21. 如何对表格进行排序?
- 22. 如何对NSArray进行自然排序?
- 23. 如何对WordPress页面进行排序?
- 24. 如何对ArrayStore进行排序?
- 25. 如何对infragistics ultragrid进行排序?
- 26. 如何对PHP数组进行排序?
- 27. 如何对段进行排序C++
- 28. 如何对NSArray进行排序?
- 29. 如何对链表进行排序?
- 30. 如何对QDateTime *的QList进行排序?
它是如何将在斯威夫特使用? – Developer 2015-01-02 06:08:10