Является ли ABRecordID надежным способом идентификации уникальных контактов?
Мое приложение загружает контакты, и в будущем потребуется их обновить. Использует ABRecordID
надежный способ идентификации людей, или для новой записи можно получить идентификатор удаленной записи?
Чтобы оптимизировать загрузку, я хотел бы загружать только те записи, которые были изменены или созданы с момента последней загрузки. В настоящее время я храню копию контактов этого человека с использованием основных данных. Я хотел бы уменьшить площадь своего приложения и ускорить время сканирования в адресной книге этого человека в поисках измененных / новых контактов и ограничить количество, которое необходимо загрузить. После анализа адресных книг некоторых людей число контактов может варьироваться от 30 до 30 000. Работа с 30 000 контактов - это кошмар.
1 ответ
Новая запись не получит идентификатор, ранее связанный с удаленной записью. ABRecordID
в этом отношении уникальны. Но они не обязательно согласованы во времени, пара вещей может привести к изменению идентификатора. Пользователь, включающий или выключающий iCloud, может вызвать изменение идентификатора, а также восстановление устройства из itunes. Это сказало, ABRecordID
по-прежнему ваш лучший выбор для получения уникального идентификатора для контакта. Вам просто нужно дважды проверить, что все выстраиваются в линию при его использовании. Apple предлагает следующее в руководстве по программированию адресной книги:
Рекомендуемый способ сохранить долговременную ссылку на конкретную запись - сохранить имя и фамилию или хэш имени и фамилии в дополнение к идентификатору. Когда вы просматриваете запись по идентификатору, сравните имя записи с вашим сохраненным именем. Если они не совпадают, используйте сохраненное имя, чтобы найти запись, и сохраните новый идентификатор для записи.