Является ли ABRecordID надежным способом идентификации уникальных контактов?

Мое приложение загружает контакты и, в будущем, должно будет их обновить. Использует ли ABRecordID надежный способ идентификации людей или возможно, что новая запись получит идентификатор удаленной записи?

Чтобы оптимизировать загрузку, я хотел бы загрузить только те записи, которые были изменены или созданы с момента последней загрузки. Я в настоящее время храню копию контактов с использованием основных данных. Я хотел бы уменьшить размер моего приложения и ускорить время выполнения сканирования через адресную книгу человека, ищущую измененные/новые контакты, и ограничить объем, который необходимо загрузить. После анализа того, как некоторые люди обращаются к книгам, количество контактов может варьироваться от 30 до 30 000. Работа с 30 000 контактов - это кошмар.

Ответы

Ответ 1

Новая запись не получит идентификатор, ранее связанный с удаленной записью. ABRecordID являются уникальными в этом отношении. Но с течением времени они не обязательно согласовываются, некоторые вещи могут привести к изменению идентификатора. Пользователь, включивший или выключивший iCloud, может привести к изменению идентификатора, а также восстановление устройства из itunes. Тем не менее, ABRecordID по-прежнему ваш лучший выбор для получения уникального идентификатора для контакта. Вам просто нужно дважды проверить, что при его использовании выстраиваются строки. Apple предлагает следующее в руководстве по программированию адресной книги:

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