Iphone 如何在核心数据堆栈中的客户端上使用ABPeoplePickerNavigationController

Iphone 如何在核心数据堆栈中的客户端上使用ABPeoplePickerNavigationController,iphone,objective-c,ios,core-data,abaddressbook,Iphone,Objective C,Ios,Core Data,Abaddressbook,我有一个核心数据堆栈,其中包含一个名为“Client”的实体。每个客户机都有一个“addressBookID”属性,该属性引用地址簿中个人记录的唯一ID。我目前正在使用fetchedResultsController填充tableViewController以显示这些客户端。但是,viewController非常基本 理想情况下,我希望使用ABPeoplePickerNavigationController UI,这样我的客户机就可以被最后一个字母的各个部分分隔开,并且在右侧有一个拖拽条,可以快

我有一个核心数据堆栈,其中包含一个名为“Client”的实体。每个客户机都有一个“addressBookID”属性,该属性引用地址簿中个人记录的唯一ID。我目前正在使用fetchedResultsController填充tableViewController以显示这些客户端。但是,viewController非常基本

理想情况下,我希望使用ABPeoplePickerNavigationController UI,这样我的客户机就可以被最后一个字母的各个部分分隔开,并且在右侧有一个拖拽条,可以快速切换到字母表中所需的点。添加的搜索功能也很有用

是否可以使用ABPeoplePickerNavigationController,但用您自己的数据填充它(例如使用委托)

另外,这些功能是否可以轻松地添加到fetchedResultsController样式表中?我唯一的另一个问题是能够从核心数据堆栈中获取结果,但按照存储在ABAddressBook中的名称对它们进行排序。我不确定sortDescriptor是否可以通过引用堆栈外存储的字段进行排序


感谢您的建议/评论?

您需要创建一个ABAddressBookRef,并在其中填充您希望显示在导航控制器中的联系人。然后创建ABPeoplePickerNavigationController并将ABAddressBookRef分配给addressBook属性

要创建ABAddressBookRef,请从ABAddressBookCreate()和ABAddressBookAddRecord()开始。这些功能记录在中

如果您不想保存对ABAddressBookRef的更改(换句话说,您想使用临时联系人进行设置),只需不调用ABAddressBookSave()。文件说明

只有在使用ABAddressBookSave保存通讯簿后,对返回的通讯簿所做的更改才会反映在通讯簿数据库中


您需要创建一个ABAddressBookRef,并用希望显示在导航控制器中的联系人填充它。然后创建ABPeoplePickerNavigationController并将ABAddressBookRef分配给addressBook属性

要创建ABAddressBookRef,请从ABAddressBookCreate()和ABAddressBookAddRecord()开始。这些功能记录在中

如果您不想保存对ABAddressBookRef的更改(换句话说,您想使用临时联系人进行设置),只需不调用ABAddressBookSave()。文件说明

只有在使用ABAddressBookSave保存通讯簿后,对返回的通讯簿所做的更改才会反映在通讯簿数据库中


非常感谢-如何填充ABAddressBookRef的新实例?我以为这些只是苹果通讯簿的编程接口,因此只能显示苹果通讯簿中存储的联系人?很抱歉,我这么说,但这不会给苹果通讯簿添加记录吗?我可能误解了苹果的文档,但它指出“ABAddressBook不透明类型(其实例称为地址簿)提供了地址簿的编程接口——一个由多个应用程序用来存储个人信息的集中数据库。”我不明白如何创建一个单独的实例并使用ABAddressBookAddRecord而不更改中心通讯簿(答案已更新)--请务必阅读iOS的ABAddressBook参考。非常感谢-如何填充ABAddressBookRef的新实例?我以为这些只是苹果通讯簿的编程接口,因此只能显示苹果通讯簿中存储的联系人?很抱歉,我这么说,但这不会给苹果通讯簿添加记录吗?我可能误解了苹果的文档,但它指出“ABAddressBook不透明类型(其实例称为地址簿)提供了地址簿的编程接口——一个由多个应用程序用来存储个人信息的集中数据库。”我不明白如何创建一个单独的实例并使用ABAddressBookAddRecord而不更改中心通讯簿(答案已更新)——请务必阅读iOS的ABAddressBook参考。
Optional. The address book from which to obtain the list of contacts.

@property(nonatomic, readwrite) ABAddressBookRef addressBook