ABContact из Обертки Эрики Садун ObjC (ABContactsHelper), верно?
Я тоже его использую и обнаружил, что по какой-то причине ABPersonViewController от Apple почему-то трактует предоставленный ABRecordRef как contact.record иначе, чем если бы вы непосредственно использовали функции C.
Таким образом, это:
ABContact *person = ...;
ABPersonViewController *personVC = ...;
personVC.displayedPerson = person.record;
почти ничего не загрузит в контроллер. Иногда имя / фамилия, иногда даже не это. Однако, если вы сделаете это:
ABContact *person = ...;
ABPersonViewController *personVC = ...;
ABAddressBookRef addressBook = ABAddressBookCreate();
personVC.displayedPerson = ABAddressBookGetPersonWithRecordID(addressBook, person.recordID);
тогда он загрузит все.
Предыдущий ответ говорит, что ABAddressBookCreate требуется, чтобы константы имели значение, но это уже сделано в вызове [ABContactsHelper addressBook] (первое, что я вызываю в своем коде). Это действительно загадочно, когда теряется. Но предыдущий работает, последовательно.