首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GroupMe联系人地址簿

GroupMe联系人地址簿
EN

Stack Overflow用户
提问于 2011-11-06 18:55:36
回答 1查看 9.6K关注 0票数 6

我想要建立一个类似于ContactsTableViewControllerGroupMe。它显示了我所有的通讯簿联系人,甚至哪些是GroupMe用户。

看来不能自定义ABPeoplePickerNavigationController

  1. 那么,如果我使用ABAddressBook & ABPerson访问通讯簿联系人,用自定义UITableViewController显示它们的最佳方法是什么? 我不想仅仅将所有通讯簿联系人加载到一个NSArray中,因为这可能会扼杀内存(我知道有成千上万个通讯簿联系人在他们的手机上)。我习惯于对这样的大型结果集使用Core & NSFetchedResultsController。但是,要做到这一点,我必须在核心数据中创建一个ABPerson模型,这很容易,但保持它与地址簿同步似乎很有挑战性,而且有点愚蠢。
  2. 将GroupMe联系人关联/链接到通讯簿联系人的最佳方法是什么?
  3. 在尝试重新创建这个GroupMe风格的界面时,还有什么是我应该知道/考虑的吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-07 14:31:45

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

  1. 我们扫描用户通讯录并将其存储在核心数据中。我们有一个联系人对象,其中一对多针对电话号码,一对多针对电子邮件地址。如果有大量的联系人,第一次扫描可能会花费一些时间,但是在每次后续扫描中,我们忽略了在最后一次扫描之前具有kABPersonModificationDateProperty的任何kABPersonModificationDateProperty。这使得更新速度快得多。
  2. 然后,假设用户选择同步联系人,我们会将电话号码和电子邮件地址上传到我们的服务器,这将与现有的GroupMe用户相匹配。
  3. 最后,我们根据匹配(来自电话、电子邮件、facebook、twitter)提取GroupMe关系,并将这些关系存储在核心数据中。如果关系是由于用户通讯簿中已经存在的电话/电子邮件而建立的,我们将这些值传回关系中,这样我们就可以在GroupMe关系和我们存储在核心数据中的联系人之间建立1到1的关系。这样,我们就可以为本地联系人或GroupMe关系创建NSFetchRequests,并且在任何时候都可以获得它们的关系细节(因此我们可以在屏幕截图中显示本地联系人是GroupMe用户等等)。

我们也使用NSFetchedResultsController,这样如果后台操作发现任何新的联系人/关系,我们就可以在UI中得到反映的更新。

唯一的其他技巧是确保您有您的获取请求预取所有关系,这样加载关系的原因不会击中核心数据,因为您滚动填充错误。

是的,虽然将核心数据n‘’sync与用户的地址簿放在一起要比愚蠢得多,但这是值得的,这样您就可以轻松地访问它,也可以方便地查询需要了解所有这些内容的查询。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8029501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档