2012-02-21 2 views
1

'클라이언트'라는 엔티티가 포함 된 코어 데이터 스택이 있습니다. 각 클라이언트에는 AddressBook에있는 개인 레코드의 uniqueID를 참조하는 'addressBookID'등록 정보가 있습니다. 나는 현재 fetchedResultsController를 사용하여이 클라이언트를 표시하기 위해 tableViewController를 채 웁니다. 그러나 viewController는 매우 기본입니다.코어 데이터 스택의 클라이언트에서 ABPeoplePickerNavigationController를 사용하는 방법

이상적으로는 ABPeoplePickerNavigationController UI를 사용하여 클라이언트가 Last Initial 섹션으로 구분되고 오른쪽에 드래그 표시 줄이있어 알파벳의 원하는 지점으로 빠르게 넘길 수 있습니다. 추가 된 검색 기능도 유용합니다.

ABPeoplePickerNavigationController를 사용할 수는 있지만 대리자를 사용하여 자신의 데이터로 채울 수 있습니까?

어쨌든 이러한 기능의 비트는 fetchedResultsController 스타일 테이블에 쉽게 추가됩니까? 내가 가진 유일한 다른 문제는 핵심 데이터 스택에서 결과를 가져올 수 있지만 ABAddressBook에 저장된대로 이름별로 정렬 할 수 있다는 것입니다. sortDescriptor가 스택 외부에 저장된 필드에 대한 참조로 정렬 할 수 있는지 확신하지 못합니다.

어떤 조언이나 의견이 있으십니까?

답변

1

ABAddressBookRef를 만들고 탐색 컨트롤러에 표시 할 연락처로 채워야합니다. 그런 다음 ABPeoplePickerNavigationController를 만들고 ABAddressBookRef를 addressBook 속성에 할당합니다.

Optional. The address book from which to obtain the list of contacts. 

@property(nonatomic, readwrite) ABAddressBookRef addressBook 

ABPeoplePickerNavigationController documentation

는, ABAddressBookRef을 만들 ABAddressBookCreate()와 ABAddressBookAddRecord 시작하려면(). 이 기능은 Apple's ABAddressBook Reference for iOS에 설명되어 있습니다.

ABAddressBookRef에 대한 변경 내용을 저장하지 않으려면 (즉, 임시 연락처로 설정하려는 경우) ABAddressBookSave()를 호출하지 마십시오. 문서 상태

반환 된 주소록에 대한 변경 사항은 ABAddressBookSave를 사용하여 주소록을 저장 한 후에 만 ​​주소록 데이터베이스에 반영됩니다.

+0

대단히 감사합니다. ABAddressBookRef의 새로운 인스턴스를 어떻게 채우나요? 나는 이것들이 단순히 애플 주소록에 대한 프로그래밍 인터페이스 였기 때문에 애플 주소록에 저장된 연락처만을 표시 할 수 있다고 생각했다. –

+0

(답변이 업데이트되었습니다.) – bneely

+0

사과해야 할 일이있어서 유감이지만 Apple 주소록에 레코드를 추가하지 않겠습니까? 나는 Apple의 설명서를 오해하고 있을지 모르지만 "주소록으로 알려진 인스턴스 인 ABAddressBook의 불투명 한 유형은 사람들에 대한 개인 정보를 저장하기 위해 여러 응용 프로그램에서 사용되는 중앙 데이터베이스 인 주소록에 프로그래밍 인터페이스를 제공합니다." 별도의 인스턴스를 만들고 중앙 주소록을 변경하지 않고 ABAddressBookAddRecord를 사용하는 방법을 이해하지 못합니다. –