处理别人的代码。我真的很困惑这段代码中究竟发生了什么。
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 人。应设置他的属性并显示他的记录/详细信息。他永远不应该被保存在地址簿中。这是这样做的方法吗?需要帮助。
编辑:除了为人员设置属性外,还添加以下代码来推送 View Controller 以查看人员。
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()
希望这对你有帮助......:)
关于iphone - 设置人员属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386249/