ABRecordID
наверняка изменится (усвоив этот сложный путь - в результате синхронизации контактов нескольких машин)
У Мэтта Джеммелла хорошая запись на iphone-dev-tips-tips-for-synced-contacts
Я не храню составное имя, а вместо этого ABRecordId, имя, фамилию, адрес электронной почты и номер телефона (последние два из которых используются непосредственно моим приложением).
Если я не получу удар по
ABRecordRef aRef = ABAddressBookGetPersonWithRecordID(addressBook, aRecordId);
Я использую код для поиска потенциальных совпадений по фамилии, имени, а затем уточняю по телефонным номерам.
В заключение я связываю сгенерированный UUID для контакта, так что все это (потенциально) нечеткое разрешение абстрагируется от данных, которые я связываю с контактом.