Идентифицируйте записи ABRecord уникальным образом: является ли [ABRecord uniqueId] неизменным? - PullRequest
5 голосов
/ 17 августа 2011

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

  - (NSString *)uniqueId

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

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

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

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 23 сентября 2011

Для чего это стоит, из технической документации Apple:

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

2 голосов
/ 06 августа 2013

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

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

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

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

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

...