0
我有一個使用地址簿的應用程序。我試圖用從iPhone地址簿中排序聯繫人
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開始。所以我收到錯誤的電話號碼。
如何匹配兩種排序 - 名稱排序和數字排序?
什麼是子陣列?代碼崩潰在[subArrays objectAtIndex:26] :( – iOSDev
我添加了代碼實例化子陣列,對此感到抱歉 – mergesort
感謝您的代碼,但通過此代碼,數組排序列出聯繫人開頭的特殊字符頂部。特殊字符在末尾,與iPhone原生地址簿完全類似:(如何實現? – iOSDev