Идентифицировать записи ABRecord однозначно: является ли [ABRecord uniqueId] неизменяемым?


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

  - (NSString *)uniqueId

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

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

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

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

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

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

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

2 5

2 ответа:

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

KABUIDProperty Уникальный идентификатор для этой записи. он гарантированно никогда не изменится , независимо от того, насколько сильно изменится запись. Если вам нужно сохранить ссылку на запись, используйте это значение. Тип: kABStringProperty. Доступен в Mac ОС X версии V10.2 и позднее. Объявлено в ABGlobals.h.

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

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

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

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

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