2014-07-14 7 views
0

코어 데이터를 사용하여 주소록 연락처의 ID를 SQLite 파일에 저장하는 앱을 만들려고합니다.주소록 및 코어 데이터

내 문제는 내가 그 ID 중 일부를 무작위로 요청하고 연락처 ID에 갭이있을 수 있으므로 연락처 ID가 신뢰할 수 없다는 것입니다. 그래서 임의로 할 수있는 일종의 색인 속성이 필요합니다. 그 인덱스에 갭이있을 수 없어, 그리고 만약 내가 내 데이터베이스에서 일부 ID를 삭제, 나는 인덱스가 색인을 다시 생성되었는지 확인하고 싶습니다 (인덱스가 올바른 이름, 어쩌면 키에 대한 확실하지 않습니다).

자동으로 핵심 데이터가 구현됩니까? 그것이 기본적으로 만드는 모든 데이터 모델에 대한 키를 생성합니까? 그렇다면 액세스하여 활용할 수 있습니까? 행을 삭제하면 어떻게됩니까?

죄송합니다. 예비 질문 일 수 있습니다.

주소록이 ABAddressBookRegisterExternalChangeCallback(addressBook, addressBookChanged, *context)으로 변경되면 내 SQLite 파일을 업데이트하는 가장 좋은 방법은 무엇입니까? 전체 SQLite에 대한 전체 주소록을 다시 작성해야합니까? 1 부

+0

임의의 데이터를 가져 오는 경우에만 "색인"속성이 필요합니까? 아니면 다른 목적으로 사용됩니까? – iAmd

+0

무작위 데이터 만 가져올 수 있습니다. 왜냐하면 주소록에서 얻은 연락처 ID에 무작위 적으로 잘못된 ID가 표시되고 다른 ID를 찾아야 할 가능성이 높기 때문에 언젠가 사용할 수 있습니다. –

답변

1

:

은 당신의 연락 기관을 모두 반환 요청을 가져 작성합니다. 그런 다음 -countForFetchRequest:을 사용하여 보유하고있는 사용자 수를 확인하십시오.

엔티티 수의 범위 내에서 임의의 정수를 생성하십시오.

지금 2 부에 대한 또 다른 그 임의의 정수로 동일한 -fetchOffset로 요청을 가져 쓰고, 1

fetchLimit : ABExternalChangeCallback에 대한 문서가 변경 오브젝트를 나타내는 것입니다 어떤 매개 변수를 나열하지 않습니다. 그러나 주소록을 kABPersonModificationDateProperty으로 정렬하고 마지막으로 동기화 한 이후로 변경된 레코드를 살펴볼 수 있습니다.

+0

나는 그 부분을 얻었다. 고마워. 주소록이 업데이트되면 전체 코어 데이터 파일을 업데이트 된 주소록으로 덮어 쓰려면 어떻게해야합니까? –

+0

가장 간단한 방법은 새 이름으로 처음부터 데이터 파일을 다시 만드는 것입니다. 그런 다음 이전 것을 닫고 새 것을 제자리로 옮긴 다음 다시여십시오. 어떤 이유로 든 재구성에 실패하면 원래 데이터는 그대로 유지되며 다시 시도 할 수 있습니다. –