设置人员属性

时间:2012-04-30 15:28:09

标签: iphone ios abpersonviewcontroller abrecordref

处理别人的代码。我真的很困惑这个代码到底发生了什么。

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 个答案:

答案 0 :(得分:1)

这正是这里发生的事情..我会解释..

ABAddressBookCreate根据地址簿数据库中的数据创建新的地址簿,因此您对ABAddressBookRef所做的任何更改只会在您调用ABAddressBookSave()后保存到实际的地址簿数据库中。所以它正在做的是获取具有recordid x的人的参考。比使用

创建新人条目
ABRecordRef persons = ABPersonCreate(); 

而不是设置其值,但这可用于此特定对象,除非您调用... ABAddressBookSave()

,否则不会存储在数据库中

希望这可以帮助你......:)