2010-04-23 25 views

cevap

26

Adres defterinde tüm kişi kayıtlarının bir dizisini almak için ABAddressBookCopyArrayOfAllPeople() numaralı telefonu arayın. Sonra the documentation izleyin:

, insanların bir dizi sıralamak karşılaştırıcı olarak işlev ABPersonComparePeopleByName ve tip ABPersonSortOrdering bir çerçevesi ile işlev CFArraySortValues ​​kullanın. ABPersonGetSortOrdering tarafından döndürülen kullanıcının istediği sıralama düzeni genellikle tercih edilen bağlamdır.

Aşağıdaki kod listesi tüm Adres Defteri veritabanını sıralama örneğini göstermektedir:

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); 
7

şuna ne dersiniz: - Ben

ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering 

ABPerson.h

+0

o Swift kullanılacak Nasıl

-Kevin

? – Developer

4

beyan duyuyorum iPhone'dan adres defterini kopyalamak için yukarıdaki kodu kullanarak (onaylanan yanıtta) ve ayrıca ABPersonComparePeopleByName Adres defterini sıralamak için. Ancak, iPhone'un uluslararası dili farklı olduğunda, aynı adres defteri için farklı sıralama sonuçları olacağını fark etti. Farklı dilleri farklı kriterlere göre ayırmanın makul olduğunu varsayalım. Yani bizim projemizde "en.lproj" var .. "zh-hant.lproj" ... "ja.lproj", NSCalendar, biz de "yerel ayar" ayarı var. Bu yüzden ABPersonComparePeopleByName için kriterleri nasıl ayarlayacağımı düşünüyorum ve Apple'a sordum. Çok yardımcı bir cevap: "bir sıralama emri öngörülebilir değil".

Apple'ın cevapta ilgili kısmı aşağıdaki gibidir:

Bu aslında normal bir davranıştır. Farklı dillerde sıralama yapmak, aslında kullanıcının beklentisinin dil/konuma bağlı olarak değiştiği inanılmaz karmaşık bir konudur. Dürüst olmak gerekirse, en iyi seçeneğiniz beklentilerinizi ayarlamak ve sıralama düzeninin öngörülebilir olmadığını varsaymaktır. Başka herhangi bir yaklaşım, birçok uluslararası kullanıcıyı rahatsız edip karıştırır. Kevin Elliott, DTS Mühendisi, kevin_elliott @ elma, com

+0

lütfen bu yayına bir bağlantı ekleyin. – tipycalFlow