处理别人的代码。我真的很困惑这个代码到底发生了什么。
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
。
您是否发现任何联系人可以在地址簿中重复的情况
答案 0 :(得分:1)
这正是这里发生的事情..我会解释..
ABAddressBookCreate
根据地址簿数据库中的数据创建新的地址簿,因此您对ABAddressBookRef
所做的任何更改只会在您调用ABAddressBookSave()
后保存到实际的地址簿数据库中。所以它正在做的是获取具有recordid x
的人的参考。比使用
ABRecordRef persons = ABPersonCreate();
而不是设置其值,但这可用于此特定对象,除非您调用... ABAddressBookSave()
希望这可以帮助你......:)