gpt4 book ai didi

iphone - iPhone 上 ABPeoplePickerNavigationController 的自定义地址簿

转载 作者:行者123 更新时间:2023-11-29 11:23:14 24 4
gpt4 key购买 nike

我正在尝试通过向设备地址簿添加新记录(基本上是将私有(private)联系人列表与设备 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 上。

谢谢!

最佳答案

正如 Toro 所说,您需要先将所有更改保存到数据库。 ABPeoplePickerNavigationController 不适用于未提交的数据或自定义数据。

你可以在 Apple Dev Forums 上看到比较新鲜的话题 https://devforums.apple.com/message/370070#370070在哪里提出了类似的问题。苹果公司的人说“我看不出有什么办法可以做到这一点。”但他建议为此填充一个错误,以便在未来的 iOS 版本中实现此功能。

您现在所能做的就是从头开始为这个 AddressBook 编写您自己的 UI :(

更新:呵呵。我也在 App Dev Forum 上发现了你的问题 )))

关于iphone - iPhone 上 ABPeoplePickerNavigationController 的自定义地址簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com