20160830UILocalizedIndexedCollation的使用
来源:互联网 发布:哔哩哔哩mac版10.9 编辑:程序博客网 时间:2024/04/30 21:52
我在开发中曾经有这样的需求,就是对通讯录的字符串排序,这个需求很大众,我参与开发的两个app都遇到,我是一般会追求最优解决方案的,发现了UILocalIndexedCollation,那比自己写得排序要强大多了吧,如果是自己的排序要考虑很多问题的,比如多音字问题,有时排序不怎么正确,尤其是对于一些特殊问题,而且效率不高,对于很大数据量,所以还是选择UILocalIndexedCollation比较合适。 本文主要介绍 UILocalIndexedCollation的使用。查看苹果文档
The UILocalizedIndexedCollation
class is a convenience for organizing, sorting, and localizing the data for a table view that has a section index. The table view’s data source then uses the collation object to provide the table view with input for section titles and section index titles.
Table views with section indexes are ideal for displaying and facilitating the access of data composed of many items organized by a sequential ordering scheme such as the alphabet. Users tap an index title to jump to the corresponding section. The initial table view of the Phone/Contacts application on the iPhone is an example. Note that the section titles can be different than the titles of the index.
To prepare the data for a section index, your table-view controller creates a indexed-collation object and then, for each model object that is to be indexed, calls sectionForObject:collationStringSelector:
. This method determines the section in which each of these objects should appear and returns an integer that identifies the section. The table-view controller then puts each object in a local array for its section. For each section array, the controller calls the sortedArrayFromArray:collationStringSelector:
method to sort all of the objects in the section. The indexed-collation object is now the data store that the table-view controller uses to provide section-index data to the table view, as illustrated in Listing 1.
上面第三段文字给出了大概的解题思路,我们首先可以将需要排序的数据分成几个section 部分,在对每个部分进行排序。下面来段实例代码。
UILocalizedIndexedCollation *indexedCollation = [UILocalizedIndexedCollation currentCollation]; // Iterate over the products, populating their section number for (Product *theProduct in productsTemp) { NSInteger section = [indexedCollation sectionForObject:theProduct collationStringSelector:@selector(name)]; theProduct.section = section; } // Get the count of the number of sections NSInteger sectionCount = [[indexedCollation sectionTitles] count]; // Create an array to hold the sub arrays NSMutableArray *sectionsArray = [NSMutableArray arrayWithCapacity:sectionCount]; // Iterate over each section, creating each sub array for (int i=0; i<=sectionCount; i++) { NSMutableArray *singleSectionArray = [NSMutableArray arrayWithCapacity:1]; [sectionsArray addObject:singleSectionArray]; } // Iterate over the products putting each product into the correct sub-array for (Product *theProduct in productsTemp) { [(NSMutableArray *)[sectionsArray objectAtIndex:theProduct.section] addObject:theProduct]; } // Iterate over each section array to sort the items in the section for (NSMutableArray *singleSectionArray in sectionsArray) { // Use the UILocalizedIndexedCollation sortedArrayFromArray: method to // sort each array NSArray *sortedSection = [indexedCollation sortedArrayFromArray:singleSectionArray collationStringSelector:@selector(name)]; [self.products addObject:sortedSection]; }
productsTemp是需要排序的数据,Pruduct 是一条数据的模型,product可以有 name ,manufacture,details等字段,现在可以添加section这个字段,通过
sectionForObject:collationStringSelector: 获得这个section并且保存。获取每部分的 sectionArray ,然后对没部分里面的数据进行排序,可以通过
sortedArrayFromArray:collationStringSelector
这个函数,最后得到 sortedSection 排好序的数据。
- 20160830UILocalizedIndexedCollation的使用
- UILocalizedIndexedCollation的使用
- UILocalizedIndexedCollation 使用
- 关于使用UILocalizedIndexedCollation 实现tableview的边索引
- iOS 使用UILocalizedIndexedCollation实现通讯录样式的索引
- UILocalizedIndexedCollation 的浅分析
- UILocalizedIndexedCollation 的浅分析
- UILocalizedIndexedCollation
- 13.UILocalizedIndexedCollation
- UILocalizedIndexedCollation简介
- iOS UILocalizedIndexedCollation
- 本地化下按首字母分组排序的神器——UILocalizedIndexedCollation
- 本地化下按首字母分组排序的神器——UILocalizedIndexedCollation
- 本地化下按首字母分组排序的神器——UILocalizedIndexedCollation
- 本地化下按首字母分组排序的神器——UILocalizedIndexedCollation
- 本地化下按首字母分组排序的神器——UILocalizedIndexedCollation
- 本地化下按首字母分组排序的神器——UILocalizedIndexedCollation
- UILocalizedIndexedCollation ios首字母排列
- android 之 Baseactivity 和BaseFragment
- HDU2841 一个关于互质的容斥
- HTML&CSS_媒介类型(Media Types)
- 面试常考算法题总结(二)
- Android开发工具类(各种方法调用 )
- 20160830UILocalizedIndexedCollation的使用
- Java并发编程:深入剖析ThreadLocal
- java 继承
- 电冰箱,为价格插入“,”
- openssl https openssl 证书生成
- 1447 取出整数的一部分
- Python模块之shelve
- android碎片知识点
- [Codeforces Round #369 (Div. 2) C. Coloring Trees] DP