Iphone 设置个人属性

Iphone 设置个人属性,iphone,ios,abpersonviewcontroller,abrecordref,Iphone,Ios,Abpersonviewcontroller,Abrecordref,正在处理其他人的代码。我真的很困惑这段代码到底发生了什么 ABAddressBookRef addressBook = ABAddressBookCreate(); ABRecordRef persons = ABAddressBookGetPersonWithRecordID(addressBook, x); CFErrorRef *error=NULL; ABAddressBookRemoveRecord(addressBook, persons, error); ABAddressBoo

正在处理其他人的代码。我真的很困惑这段代码到底发生了什么

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 person。应设置其属性并显示其记录/详细信息。他永远不应该被保存在通讯录里。是这样做的吗。我需要帮助

编辑:除了将属性设置为person外,还添加了以下代码以推动view控制器查看person

MyContactDetailViewcontroller *personContactDetail = [[MyContactDetailViewcontroller alloc] init];
personContactDetail.displayedPerson = persons; 
personContactDetail.passedSelectedContactData = selectedContactsOnlyData;
[self.navigationController pushViewController:personContactDetail animated:YES];
[personContactDetail release];
MyContactDetailViewcontroller
子类
ABPersonViewController
。还是更倾向于使用
ABUnknownPersonViewController


您是否发现通讯录中的联系人可能重复出现的情况?这正是这里发生的情况。。我会解释的

ABAddressBookCreate
从地址簿数据库中的数据创建一个新的地址簿,因此对
ABAddressBookRef
所做的任何更改只有在调用
ABAddressBookSave()
后才会保存到实际的地址簿数据库中。因此,它所做的是获取具有recordid-
x
的人的参考。而不是使用创建新的人员条目

ABRecordRef persons = ABPersonCreate(); 
然后设置它的值,但这对这个特定对象可用,并且不会存储在数据库中,除非调用<代码>ABAddressBookSave()


希望这能帮助你……:)

调用ABAddressBookSave()时,此人实际上被保存到通讯簿中,对其属性的任何更改也将反映在通讯簿中。是这样吗?创建人员后不会调用ABAddressBookSave(),因此否。如果再次调用ABAddressBookSave(),则返回YES(仅限在此之前所做的更改)。
ABAddressBookSave(addressBook,错误)。这段代码是做什么的。它是否保存没有任何属性的人?第一个参数指定要复制到通讯簿数据库中的实例,第二个参数表示生成的任何错误将保存到数据库中。。。有关更多信息,请参阅此。。。我面临的问题是,一些联系人在通讯簿中重复。我不确定上述代码中是否存在重复。就上述代码而言,它不应该在通讯录中保存任何联系人。