Come posso sort (o recuperare array ordinato di) un contatto libro iphone per nome & cognome programmazione ??come ordinare la rubrica di iphone?
Qualsiasi aiuto sarà apprezzato ...! Grazie
Come posso sort (o recuperare array ordinato di) un contatto libro iphone per nome & cognome programmazione ??come ordinare la rubrica di iphone?
Qualsiasi aiuto sarà apprezzato ...! Grazie
Chiama il ABAddressBookCopyArrayOfAllPeople()
per ottenere una serie di record di tutte le persone nella rubrica. Quindi seguire the documentation:
per ordinare un array di persone, utilizzare i CFArraySortValues funzione con la funzione ABPersonComparePeopleByName come comparatore ed un contesto di tipo ABPersonSortOrdering. L'ordinamento desiderato dall'utente, restituito da ABPersonGetSortOrdering, è generalmente il contesto preferito.
Il seguente listato mostra un esempio di ordinamento l'intero database della Rubrica:
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);
Che ne dite di questo: -
ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering
dichiarato in ABPerson.h
Sono utilizzando il codice precedente (dalla risposta approvata) per copiare la rubrica da iPhone e utilizzato anche ABPersonComparePeopleByName
per ordinare la rubrica. Ma ha scoperto che avrà diversi risultati di ordinamento per la stessa rubrica, quando la lingua internazionale dell'iPhone è diversa. Supponiamo che sia ragionevole ordinare lingue diverse in base a criteri diversi. Quindi, nel nostro progetto abbiamo "en.lproj" .. "zh-hant.lproj" ... "ja.lproj", In NSCalendar
, abbiamo anche "locale" impostazione. Quindi sto pensando a come impostare i criteri per ABPersonComparePeopleByName
e ho chiesto ad Apple. Una risposta molto utile: "un ordinamento non è prevedibile".
La parte rilevante della risposta di Apple è qui sotto:
Questo è in realtà un comportamento normale. L'ordinamento in diverse lingue è in realtà un problema incredibilmente complesso in cui l'aspettativa dell'utente varia notevolmente a seconda della lingua/posizione. Onestamente, la scelta migliore è quella di adeguare le aspettative e assumere che l'ordinamento non sia prevedibile. È probabile che qualsiasi altro approccio infastidisca e confonderà molti utenti internazionali.
-Kevin
Kevin Elliott, DTS Ingegnere, kevin_elliott @ mela, com
si prega di aggiungere un collegamento a questo post pure. – tipycalFlow
Come saranno utilizzati in Swift? – Developer