iPhone上的ABPeoplePickerNavigationController的自定义地址簿

|| 我试图通过将新记录添加到设备通讯簿(基本上是将私有联系人列表与设备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];
这些条目已成功添加到地址簿中(我可以验证是否在循环之后添加了3项)。但是,条目不会由ѭ4显示(除非我保存联系人,这当然会将所有更改保存到设备通讯簿中)。 有没有办法做到这一点?这是在iOS 4.3.1上。 谢谢!     
已邀请:
正如Toro所说,您需要首先将对数据库的所有更改保存。 ABPeoplePickerNavigationController不适用于未提交的数据或自定义数据。 您可以在Apple Dev论坛上看到相当新鲜的话题 https://devforums.apple.com/message/370070#370070 问类似问题的地方。苹果公司的一位负责人说:“我看不到有任何方法可以做到这一点。”但他建议为此填充一个错误,以便在将来的iOS版本中实现此功能。 您现在所要做的就是从头开始为该AddressBook编写自己的UI: 更新:呵呵。我也在App Dev论坛上找到了您的问题)))     
您需要通过ABAddressBookSave()方法将所有更改保存到数据库。 苹果文档链接。     

要回复问题请先登录注册