어떻게 프로그래밍 방식으로 성을 & 이름으로 아이폰 연락처 책을 정렬 (또는 검색 정렬 된 배열) 수 있습니까 ??아이폰 연락처 책을 정렬하는 방법?
도움이 될 것입니다 ...! 감사합니다.
어떻게 프로그래밍 방식으로 성을 & 이름으로 아이폰 연락처 책을 정렬 (또는 검색 정렬 된 배열) 수 있습니까 ??아이폰 연락처 책을 정렬하는 방법?
도움이 될 것입니다 ...! 감사합니다.
으로 전화하여 주소록에있는 모든 사람 레코드의 배열을 가져옵니다. 그런 다음 the documentation를 따르
, 사람들의 배열을 정렬 비교 등의 기능 ABPersonComparePeopleByName 및 유형 ABPersonSortOrdering의 컨텍스트 기능 CFArraySortValues를 사용합니다. ABPersonGetSortOrdering에 의해 반환 된 사용자가 원하는 정렬 순서는 일반적으로 선호되는 컨텍스트입니다.
다음 코드 목록은 전체 주소록 데이터베이스 정렬의 예를 보여줍니다 :
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);
어떻게 이것에 대해 : - 나는
ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering
이 ABPerson.h
선언 오전 위의 코드 (승인 된 답변에서)를 사용하여 iPhone에서 주소록을 복사하고 ABPersonComparePeopleByName
주소록 정렬 용. 그러나 iPhone의 국제 언어가 다른 경우 동일한 주소록에 대해 정렬 결과가 다를 수 있다는 것을 알게되었습니다. 다른 기준에 따라 다른 언어를 정렬하는 것이 합리적이라고 가정합니다. 그래서 우리 프로젝트에는 "en.lproj".. "zh-hant.lproj"... "ja.lproj"가 있고 NSCalendar
에는 "locale"설정이 있습니다. 따라서 ABPersonComparePeopleByName
에 대한 기준을 설정하는 방법을 생각하고 Apple에 질문했습니다. 매우 유용한 답변 : "정렬 순서를 예측할 수 없습니다.".
애플의 답변의 관련 부분은 다음과 같습니다 :
는이것은 실제로 정상적인 동작입니다. 다른 언어로 정렬하는 것은 사실 사용자의 기대가 언어/위치에 따라 크게 달라지는 매우 복잡한 문제입니다. 솔직히 최선의 선택은 예상을 조정하고 정렬 순서를 예측할 수 없다고 가정하는 것입니다. 다른 접근 방식은 많은 국제 사용자를 괴롭 히고 혼란스럽게 할 가능성이 높습니다. 케빈 엘리엇, DTS 엔지니어, kevin_elliott의 @ 사과, COM은
이 게시물에 대한 링크도 추가하십시오. – tipycalFlow
이 스위프트에 사용되는 방법
케빈이? – Developer