Идентифицировать записи ABRecord однозначно: является ли [ABRecord uniqueId] неизменяемым?
Мне нужно ссылаться на записи ABPerson из приложения. Я использую уникальный идентификатор, предоставленный
- (NSString *)uniqueId
И прикрепите его к моей записи контактов в приложении.
Кроме того, я сохраняю ABPerson представление vcard как запасной вариант. В случае, если приложение не в состоянии найти ABRecord, используя уникальный идентификатор, приложение предлагает пользователю восстановить запись в частности, адресной книги, используя сохраненные vCardRepresentation. Все работает нормально.
К сожалению, a друг сказал мне, что uniqueId не является неизменным: во время синхронизации uniqueId может внезапно измениться.
По его словам, где-то в документации iOS Apple объясняет, что не существует способа неизменяемой идентификации ABPersons с помощью uniqueId. В документации к операционной системе х' какао, мне не удалось найти такого намека.На данном Mac может ли uniqueId внезапно измениться? Если это правда, то как правильно идентифицировать записи ABPerson из внешнего источника заявление?
В случае, если uniqueID не является неизменяемым, я, конечно, могу назначить пользовательское свойство с GUID. К сожалению, настраиваемые поля не синхронизируются.
Конечно, я бы предпочел использовать uniqueId.
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 действительно говорят это (цитируется по ссылке):
"рекомендуемый способ сохранить долгосрочную ссылку на конкретную запись-это хранить имя и фамилия, или хэш имени и фамилии, в дополнение к идентификатору. Когда вы ищете запись по идентификатору, сравните имя записи с вашим сохраненным именем. Если они не совпадают, используйте сохраненное имя для поиска записи и сохраните новый идентификатор для записи."