我有一个核心数据堆栈,其中包含一个名为“Client”的实体。每个客户端都有一个'addressBookID'属性,该属性引用AddressBook中人员记录的uniqueID。我目前正在使用fetchedResultsController来填充tableViewController以显示这些客户端。但是,viewController非常基本。
理想情况下,我想使用ABPeoplePickerNavigationController UI,以便我的客户端被Last Initial的部分分开,并且右侧的拖动条可以快速滑动到字母表中的所需点。添加的搜索功能也很有用。
是否可以使用ABPeoplePickerNavigationController但用自己的数据填充(例如使用委托)?
Alernatively,这些功能是否可以轻松添加到fetchedResultsController样式表中?我唯一的另一个问题是能够从Core Data堆栈中获取结果,但是按照存储在ABAddressBook中的名称对它们进行排序。我不确定sortDescriptor可以通过引用存储在堆栈外部的字段进行排序。
欣赏任何建议/意见?
答案 0 :(得分:1)
您需要创建一个ABAddressBookRef并使用要在导航控制器中显示的联系人填充它。然后创建ABPeoplePickerNavigationController并将您的ABAddressBookRef分配给addressBook属性。
ABPeoplePickerNavigationController documentation
Optional. The address book from which to obtain the list of contacts.
@property(nonatomic, readwrite) ABAddressBookRef addressBook
要创建ABAddressBookRef,请从ABAddressBookCreate()和ABAddressBookAddRecord()开始。这些功能记录在Apple's ABAddressBook Reference for iOS。
中如果您希望不保存对ABAddressBookRef的更改(换句话说,您希望使用临时联系人进行设置),则只需不要调用ABAddressBookSave()。文档说明
只有在使用ABAddressBookSave保存地址簿后,对返回的地址簿所做的更改才会反映在地址簿数据库中。