2011-08-16 4 views
5

응용 프로그램 내에서 ABPerson 레코드를 참조해야합니다. 나는ABRecord 레코드를 고유하게 식별하십시오 : [ABRecord uniqueId]는 불변입니까?

- (NSString *)uniqueId 

으로 제공되는 unique ID을 사용하여 인앱 문의 기록에 첨부합니다.

또한 ABPerson'svCardRepresentation을 폴백으로 저장합니다. 앱이 고유 ID를 사용하여 더 이상 ABR 코드를 찾을 수없는 경우 앱은 사용자에게 저장된 vCardRepresentation을 사용하여 주소록 레코드를 복구하도록 요청합니다. 모두 잘 작동합니다.

불행히도, 친구가 말해줬습니다. uniqueId는 변경 불가능하지 않습니다. 동기화 중에는 uniqueId가 갑자기 변경 될 수 있습니다.

iOS 설명서의 어떤 부분에서 Apple은 불변이 고유 ID를 사용하는 ABPerson을 식별 할 수 없다고 설명합니다. OS X 'Cocoa 문서에서 나는 그런 힌트를 찾지 못했습니다.

특정 Mac에서 uniqueId가 갑자기 변경 될 수 있습니까? 그렇다면 외부 응용 프로그램 내에서 ABPerson 레코드를 식별하는 올바른 방법은 무엇입니까?

uniqueID가 변경 불가능하지 않은 경우 GUID가있는 사용자 지정 속성을 할당 할 수 있습니다. 안타깝게도 맞춤 입력란은 동기화되지 않습니다.

분명히 uniqueId를 사용하고 싶습니다. 대한

+0

@noa : 편집 해 주셔서 감사합니다! – SteAp

+0

아무도 대답 할 수 없습니까? – SteAp

+0

그래. 흥미로운 질문입니다. – paulmelnikow

답변

5

뭐죠 애플의 techdoc에서 그 가치 :

kABUIDProperty 이 레코드의 고유 ID. 아무리 레코드가 바뀌더라도을 절대 변경하지 않습니다. 레코드에 대한 참조를 저장해야하는 경우이 값을 사용하십시오. 유형 : kABStringProperty. Mac OS X v10.2 이상에서 사용할 수 있습니다. ABGlobals.h에 선언되어 있습니다.

+0

Thx! 확실히, 나는이 세부 사항을 알고있다. ADC의 누군가도 다른 개발자에게 uniqueID를 신뢰하지 말라고 말했습니다. 어쨌든... – SteAp

2

kABUIDProperty 방식이 더 이상 작동하지 않는 것처럼 보입니다. 나는이 블로그 항목을 통해 더 많은 토론과 함께 의견에 올랐다 :
http://blog.clickablebliss.com/2011/11/07/addressbook-record-identifiers-on-mac-and-ios/. 사례 : 사용자가 iCloud 동기화를 켜기로 결정하면 해당 사용자의 주소록에있는 고유 ID가 변경됩니다. 사용자가 iCloud 동기화를 끄면 다시 변경됩니다.

부록 : StackOverflow 항목 here을 보면서 보람있는 것 같습니다.

애플의 문서는이이 (링크에서 인용)라고 않습니다

"특정 레코드에 장기 참조를 유지하기 위해 권장되는 방법은 이름과 성, 또는의 해시를 저장하는 것입니다 ID와 함께 성과 이름 ID로 레코드를 검색 할 때 레코드 이름을 저장된 이름과 비교하고 일치하지 않으면 저장된 이름을 사용하여 레코드를 찾은 다음 저장합니다 레코드의 ID입니다. "