在 iOS 中,加载联系人排序列表的最快方法是什么?



实现类似于ABPeoplePickerNavigationController的视图时,我无法快速对列表进行排序。本机联系人应用程序立即加载列表。我正在处理4000多个联系人,因此将加载时间降低很重要。我不能使用ABPeoplePickerNavigationController,因为我需要做很多自定义UI工作。

i使用ABAddressBookCopyArrayOfAllPeople,然后使用sectionForobject将人员放置在UILocalizedIndexedCollation部分中,然后使用sortedArrayFromArray对部分进行排序。对于4000个接触,我的时间大约是8秒。

i然后切换到使用ABAddressBookCopyArrayOfAllSources,对于每个源,ABAddressBookCopyArrayOfAllPeopleInSourceWithSortOrdering,然后将每个源的联系人附加到未排序的数组,然后使用相同的UILocalizedIndexedCollation技术。我想这将时间降至大约5秒,因为这些部分大多已经分类了。

有什么方法可以改进吗?我不知道有什么技术吗?我可以以某种方式加载ABPeoplePickerNavigationController数据源没有视图并使用它吗?还是有更快的排序方法?

非常感谢。

有什么方法可以改进吗?

这可能有助于意识到您无需立即显示4000个名称。您真正需要的只是用户正在查看的任何部分的名称,您可能会更快地找到并分类这些名称。假设用户最初是在查看A部分,因此也许您使用谓词以A开头挑选出A。第二。您可以继续在后台获取和分类部分。

重点是,对所有记录进行分类需要多长时间。重要的是将用户想要的记录放在屏幕上需要多长时间。

这些触点存储在哪里?他们在Coredata吗?

我会将Coredata与NsfetchedResultScontroller一起使用,它可以处理所有内容,因此您不必关心加载时间,因为NSfetchedResultScontroller可以根据需要加载桌面目前可见的单元格。p>我希望这对您有帮助

linard

相关内容

最新更新