iphone - 设置人员属性

标签 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 人。应设置他的属性并显示他的记录/详细信息。他永远不应该被保存在地址簿中。这是这样做的方法吗?需要帮助。

编辑:除了为人员设置属性外,还添加以下代码来推送 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/

相关文章:

ios - 如何更改章节索引标题的字体颜色

iphone - 通过按下按钮在 map 上放置图钉——iOS

iphone - iPhone 5 底部的按钮不起作用

ios - 如何在 WKInterfaceLabel 中使用备用字体粗细(例如 "short")?

ios - 我可以在ios中限制capitalizedString不将上标文本大写吗

ios - 如何覆盖 init 方法并快速返回 Storyboard实例

iOS8 在重定向到 ABPersonViewController 时崩溃 [Not A Type retain] : message sent to deallocated instance

iphone - 改变 UIView 一小部分的颜色?

iOS 10、XCode 8 使用 ABPersonViewController 和 CNContactViewController 时相机屏幕黑屏