我有一个使用通讯录的应用程序。我正在尝试使用从地址簿中显示排序的姓名列表
sortedArray = [arr_contactList sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
然后当用户选择其中一个联系人时,会显示其电话号码。
我能够对 iPhone 通讯簿电话号码进行排序。
我使用以下对电话号码进行排序:
ABRecordRef source = ABAddressBookCopyDefaultSource(ab);
NSArray *thePeople = (NSArray*)ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering(ab, source, kABPersonSortByFirstName);
NSString *name;
for (id person in thePeople)
{
name = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++)
{
NSString* num = (NSString*)ABMultiValueCopyValueAtIndex(phones, j);
CFStringRef locLabel1 = ABMultiValueCopyLabelAtIndex(phones, j);
NSString *phoneLabel1 =(NSString*) ABAddressBookCopyLocalizedLabel(locLabel1);
[tempPhoneArray addObject:num];
}
}
但我的实际问题是,我的名称数组中的联系人以列表顶部的特殊字符开头,当我选择电话号码时,排序的联系人列表以字母 A 开头。所以我得到了错误的电话号码。
我如何匹配这两种排序 - 名称排序和数字排序?