Настройка свойств человека

Работаю над чужим кодом. Я действительно смущен тем, что именно происходит в этом коде.

ABAddressBookRef addressBook = ABAddressBookCreate(); 
ABRecordRef persons = ABAddressBookGetPersonWithRecordID(addressBook, x);
CFErrorRef *error=NULL;
ABAddressBookRemoveRecord(addressBook, persons, error);
ABAddressBookSave(addressBook, error);

ABRecordRef persons = ABPersonCreate(); 

ABRecordSetValue(persons, kABPersonFirstNameProperty, firstName , nil);

Что нужно сделать, это то, что человек ABRecordRef должен быть создан. Его свойства должны быть установлены и его запись / детали должны быть отображены. Он никогда не должен быть сохранен в адресной книге. Это способ сделать это. Нужна помощь.

Редактировать: Помимо установки свойств для человека, добавляется следующий код, чтобы подтолкнуть контроллер представления для просмотра человека.

MyContactDetailViewcontroller *personContactDetail = [[MyContactDetailViewcontroller alloc] init];
personContactDetail.displayedPerson = persons; 
personContactDetail.passedSelectedContactData = selectedContactsOnlyData;
[self.navigationController pushViewController:personContactDetail animated:YES];
[personContactDetail release];

MyContactDetailViewcontroller подкласс ABPersonViewController, Или это более уместно использовать ABUnknownPersonViewController,

Находите ли вы какие-либо случаи, когда контакты могли дублироваться в адресной книге?

1 ответ

Решение

Это именно то, что здесь происходит.. Я объясню..

ABAddressBookCreate создает новую адресную книгу из данных из базы данных адресной книги, поэтому любые изменения, которые вы вносите в ABAddressBookRef будет сохранен в базе данных адресной книги только после того, как вы позвоните ABAddressBookSave(), так что он получает ссылку на человека с рекорд- x, Чем вы создаете новую запись о человеке, используя

ABRecordRef persons = ABPersonCreate(); 

и чем вы устанавливаете его значение, но оно доступно для этого конкретного объекта и не сохраняется в базе данных, если вы не позвоните... ABAddressBookSave()

надеясь, что это поможет вам...:)

Другие вопросы по тегам