【发布时间】:2011-04-12 19:55:34
【问题描述】:
我正在尝试通过将新记录添加到设备通讯录(基本上是将私人联系人列表与设备 AB 合并)来在 iPhone 上创建自定义通讯录。然后我想让用户选择一个联系人,我认为我可以使用ABPeoplePickerNavigationController 的.addressbook 属性来做到这一点:
ABAddressBookRef contacts = ABAddressBookCreate();
for (PrivateUserType *user in rosterItems)
{
CFErrorRef err = NULL;
ABRecordRef ref = ABPersonCreate();
ABRecordSetValue(ref, kABPersonLastNameProperty, (CFStringRef)user.lastName, &err);
if (err != NULL)
{
NSString *errorStr = [(NSString *)CFErrorCopyDescription(err) autorelease];
NSLog(@"Can not set name: %@", errorStr);
}
...
ABAddressBookAddRecord(contacts, ref, &err);
if (err != NULL)
{
NSString *errorStr = [(NSString *)CFErrorCopyDescription(err) autorelease];
NSLog(@"Error adding XMPP roster user to addressbook: %@", errorStr);
}
}
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.addressBook = contacts;
[viewController presentModalViewController:picker animated:YES];
[picker release];
条目已成功添加到地址簿(我可以验证我是否在循环之后执行ABAddressBookSave() 以添加所有内容)。但是,picker 不会显示这些条目(除非我保存了联系人,这当然会将所有更改保存到设备地址簿中)。
有没有办法做到这一点?这是在 iOS 4.3.1 上。
谢谢!
【问题讨论】:
标签: iphone ios abaddressbook