gpt4 book ai didi

ios - GroupMe 联系人 |地址簿

转载 作者:可可西里 更新时间:2023-11-01 03:25:45 25 4
gpt4 key购买 nike

我想构建一个 ContactsTableViewController,就像 GroupMe 一样.它显示了我所有的地址簿联系人,甚至还有 GroupMe 用户。

enter image description here

似乎ABPeoplePickerNavigationController cannot be customized .

  1. 因此,如果我使用 ABAddressBookABPerson 访问地址簿联系人,使用自定义 UITableViewController 显示它们的最佳方式是什么>?

    我不想只将所有地址簿联系人加载到 NSArray 中,因为这可能会耗尽内存(我知道有些人的手机上有数千个地址簿联系人。)。对于像这样的大型结果集,我习惯使用 Core Data 和 NSFetchedResultsController。但是,要做到这一点,我必须在 Core Data 中创建一个 ABPerson 模型,这很容易,但让它与地址簿保持同步似乎具有挑战性,而且有点愚蠢。

  2. 将 GroupMe 联系人关联/链接到地址簿联系人的最佳方式是什么?

  3. 在尝试重新创建这个 GroupMe 风格的界面时,还有什么我应该知道/考虑的吗?

最佳答案

我是 GroupMe iOS 开发人员之一,这就是我们所做的。

  1. 我们扫描用户地址簿并将其存储在 Core Data 中。我们有一个 Contact 对象,它具有一对多的电话号码和一对多的电子邮件地址。如果有很多联系人,第一次扫描可能会花费一些时间,但在每次后续扫描中,我们都会忽略在上次扫描之前具有 kABPersonModificationDateProperty 的所有 ABRecordRef。这使得更新速度更快。

  2. 然后,假设用户已选择同步联系人,我们会将电话号码和电子邮件地址上传到我们的服务器,这将与现有的 GroupMe 用户匹配。

  3. 最后,我们根据匹配项(来自电话、电子邮件、facebook、twitter)提取 GroupMe 关系,并将这些关系也存储在 Core Data 中。如果关系是因为用户地址簿中已经存在的电话/电子邮件而建立的,我们将这些值传回关系中,这样我们就可以在 GroupMe 关系和我们存储在 Core Data 中的联系人之间创建一对一的关系第 1 步。这样我们可以轻松地为本地联系人或 GroupMe 关系创建 NSFetchRequest,并随时提供他们的关系详细信息(因此我们可以显示本地联系人是 GroupMe 用户等 -就像你截图中的 Aaron G.)

我们也使用 NSFetchedResultsController,因此如果我们的后台操作发现任何新的联系人/关系,我们可以在 UI 中反射(reflect)更新。

唯一的其他提示是确保您的获取请求预取所有关系,以便在滚动填充故障时加载关系原因不会触及核心数据。

是的,虽然让您的 Core Data 与用户的地址簿保持同步比愚蠢更乏味,但这是值得的,因为您可以轻松访问它并进行需要了解所有爵士乐的查询。

关于ios - GroupMe 联系人 |地址簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8029501/

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