2010-04-23 32 views
14

Làm cách nào tôi có thể sắp xếp (hoặc truy lục mảng được sắp xếp) một sổ liên lạc trên iphone bằng tên đầu tiên & tên cuối cùng theo chương trình ??cách sắp xếp sổ liên lạc trên iphone?

Mọi trợ giúp sẽ được đánh giá cao ...! Cảm ơn

Trả lời

26

Gọi ABAddressBookCopyArrayOfAllPeople() để nhận một mảng tất cả bản ghi người trong sổ địa chỉ. Sau đó làm theo the documentation:

Để sắp xếp một mảng của người dân, sử dụng CFArraySortValues ​​chức năng với chức năng ABPersonComparePeopleByName như so sánh và một bối cảnh của các loại ABPersonSortOrdering. Thứ tự sắp xếp mong muốn của người dùng, như được trả về bởi ABPersonGetSortOrdering, thường là ngữ cảnh ưa thích.

Việc niêm yết mã sau đây cho thấy một ví dụ về sắp xếp toàn bộ cơ sở dữ liệu Address Book:

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

Làm thế nào về vấn đề này: -

ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering 

khai báo trong ABPerson.h

+0

Làm thế nào nó sẽ được sử dụng trong Swift? – Developer

4

Tôi sử dụng mã trên (từ câu trả lời được phê duyệt) để sao chép sổ địa chỉ từ iPhone và cũng sử dụng ABPersonComparePeopleByName để sắp xếp sổ địa chỉ. Nhưng thấy rằng nó sẽ có kết quả phân loại khác nhau cho cùng một sổ địa chỉ, khi ngôn ngữ quốc tế của iPhone là khác nhau. Giả sử nó là hợp lý để sắp xếp các ngôn ngữ khác nhau dựa trên các tiêu chí khác nhau. Vì vậy, trong dự án của chúng tôi, chúng tôi có "en.lproj" .. "zh-hant.lproj" ... "ja.lproj", Trong NSCalendar, chúng tôi cũng có cài đặt "miền địa phương". Vì vậy, tôi đang suy nghĩ làm thế nào để thiết lập các tiêu chí cho ABPersonComparePeopleByName và hỏi Apple. Trả lời rất hữu ích: "thứ tự sắp xếp không thể dự đoán được".

Phần liên quan của câu trả lời của Apple là dưới đây:

Đây thực sự là hành vi bình thường. Sắp xếp theo các ngôn ngữ khác nhau thực sự là một vấn đề vô cùng phức tạp, nơi kỳ vọng của người dùng thay đổi rất nhiều tùy thuộc vào ngôn ngữ/địa điểm. Thành thật mà nói, lựa chọn tốt nhất của bạn là điều chỉnh kỳ vọng của bạn và giả định rằng thứ tự sắp xếp không thể dự đoán được. Bất kỳ cách tiếp cận nào khác cũng rất có thể làm phiền và gây nhầm lẫn cho nhiều người dùng quốc tế.

-Kevin

Kevin Elliott, DTS Engineer, kevin_elliott @ táo, com

+0

vui lòng thêm liên kết vào bài đăng này. – tipycalFlow

Các vấn đề liên quan