Уникальная идентификация записей ABRecord: является ли [ABRecord uniqueId] неизменным?

Мне нужно ссылаться на записи ABPerson из приложения. Я использую уникальный идентификатор, предоставленный

  - (NSString *)uniqueId

и прикрепите его к моей контактной записи в приложении.

Кроме того, я сохраняю ABPerson vCardRepresentation в качестве запасного варианта. Если приложение больше не может найти ABRecord с помощью уникального идентификатора, приложение просит пользователя восстановить запись адресной книги с помощью сохраненного vCardRepresentation. Все работает нормально.

К сожалению, друг сказал мне, что уникальный идентификатор не является неизменным: во время синхронизации уникальный идентификатор может внезапно измениться.

По его словам, где-то в документации iOS Apple объясняет, что не существует способа неизменяемой идентификации ABPersons с использованием uniqueId. В документации OS X Cocoa я не нашел такой подсказки.

Может ли уникальный идентификатор внезапно измениться на данном Mac? Если это так, как правильно идентифицировать записи ABPerson из внешнего приложения?

В случае, если уникальный идентификатор не является неизменным, я, безусловно, могу назначить пользовательское свойство с помощью GUID. К сожалению, настраиваемые поля не синхронизируются.

Конечно, я бы предпочел использовать uniqueId.


person SteAp    schedule 16.08.2011    source источник
comment
Конечно вещь. Это интересный вопрос.   -  person paulmelnikow    schedule 18.08.2011


Ответы (2)


Для чего это стоит, из techdoc Apple:

kABUIDProperty Уникальный идентификатор этой записи. Он гарантированно никогда не изменится, независимо от того, насколько сильно изменится запись. Если вам нужно сохранить ссылку на запись, используйте это значение. Тип: кАБстрингпроперти. Доступно в Mac OS X v10.2 и более поздних версиях. Об этом сообщает ABGlobals.h.

person Roger    schedule 23.09.2011
comment
Спасибо! Конечно, я знаю об этой детали. Даже кто-то из ADC сказал другому разработчику НЕ доверять уникальным идентификаторам. Так или иначе... - person SteAp; 23.09.2011

Похоже, подход kABUIDProperty больше не работает. Я наткнулся на эту запись в блоге с дополнительным обсуждением в комментариях по адресу:
http://blog.clickablebliss.com/2011/11/07/адреснаякнига-запись-идентификаторы-на-mac-and-ios/.

Показательный пример: если пользователь решит включить синхронизацию iCloud, уникальные идентификаторы в адресной книге этого пользователя изменятся. Если пользователи отключат синхронизацию iCloud, они снова изменятся.

Приложение: возможно, стоит посмотреть запись StackOverflow здесь .

Документы Apple говорят об этом (цитата по ссылке):

«Рекомендуемый способ сохранить долгосрочную ссылку на конкретную запись — сохранить имя и фамилию или хэш имени и фамилии в дополнение к идентификатору. Когда вы ищете запись по идентификатору, сравните имя записи с вашим сохраненным именем. Если они не совпадают, используйте сохраненное имя, чтобы найти запись, и сохраните новый идентификатор для записи».

person Mark Semsel    schedule 06.08.2013