确定ABContactsHelper的iOS排序顺序

cri*_*tus 2 contacts abaddressbook ios

对于iPhone项目,我正在使用Erica Sadun的ABContactsHelper.为了显示联系人,我不想使用与iOS在AdressBook.app中使用的排序顺序相同的排序顺序.有可能获得这些信息吗?

我试过了:

+ (BOOL) firstNameSorting;
+ (BOOL) lastNameSorting;
Run Code Online (Sandbox Code Playgroud)

从ABContactsHelper类,但这些总是给我名字排序.即使我在联系人设置中设置姓氏,名字.提前致谢.

克里斯

Mat*_*uch 5

ABPersonGetSortOrdering() 应该管用.

ABPersonSortOrdering sortOrder = ABPersonGetSortOrdering();
if (sortOrder == kABPersonSortByFirstName) {
    // sort by firstName
}
else {
    // sort by lastName
}
Run Code Online (Sandbox Code Playgroud)

如果你看看Ericas代码,你会发现它没有返回排序顺序.它实际上返回显示格式.

来自ABContactsHelper.m:

// Sorting
+ (BOOL) firstNameSorting
{
    return (ABPersonGetCompositeNameFormat() == kABPersonCompositeNameFormatFirstNameFirst);
}
Run Code Online (Sandbox Code Playgroud)

这是完全错误的.

也许你想跳过那个4岁的,没有维护的代码并自己写一些东西.AddressBook框架并不难理解.

  • @Matthias你能在答案中为iOS 9及更高版本添加以下代码吗?谢谢`[[CNContactsUserDefaults sharedDefaults] sortOrder]` (3认同)