日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

城市列表排序

發布時間:2023/12/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 城市列表排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

要實現如圖效果的選擇界面,我們應該怎么做呢?

首先我們有一個城市數據列表,假設是無序的,那么我們首先要對其進行排序。

假設我們從服務器獲取到數據,并將其存在一個數組中,數組中每一個地址都是一個CCCityModel,該model包含了地址相關信息。以下是排序處理:

//將服務器獲取到的citiesArray數組進行分組排序- (NSMutableArray *)convertAToZArray:(NSMutableArray *)citiesArray{//用來存放分組之后的數據NSMutableDictionary *cityDic = [NSMutableDictionary dictionary];//按首字母分組,存放在cityDic中for (int i = 0; i < [citiesArray count]; i++) {CCCityModel *cityModel = citiesArray[i];//firstCharactor方法在下邊,是將城市的第一個字母取出NSString *firstChar? = [self firstCharactor:cityModel.name];/*判斷最大的字典里所有的key是否包含當前取到的城市首字母,如果包含,則先取出對應key的數組value, 把新的值存放到對應的數組里,然后把這個數組重新賦值給這個key,完成添加。如果不包含則吧對應的 城市放到初始化的小數組中,然后新建一個鍵值對,把這個小數組賦值給這個key*/ NSMutableArray *groupArray = nil;if([[cityDic allKeys] containsObject:firstChar]){groupArray = [cityDic objectForKey:firstChar];[groupArray addObject:cityModel];[cityDic setObject:groupArray forKey:firstChar];}else{groupArray = [[NSMutableArray alloc] initWithObjects:cityModel, nil];[cityDic setObject:groupArray forKey:firstChar];}} //此時cityDic中已經將所有城市按照首字母分組好了//所有包含的首字母按照A-Z排序NSMutableArray *allCityFirstCharArray = [NSMutableArray arrayWithArray:[[cityDic allKeys] sortedArrayUsingSelector:@selector(compare:)]];//按照A-Z的順序重組數據,對分組的城市進行排序, allCityArray存放最終數據NSMutableArray *allCityArray = [NSMutableArray array];for (int i = 0; i < [allCityFirstCharArray count]; i++) {//取出對應字母分組的數組NSMutableArray *groupArray = [cityDic objectForKey:allCityFirstCharArray[i]];//對其按照A-Z的順序排序, nickNameSort為排序方法NSArray *sortArr = [ccArray sortedArrayUsingFunction:nickNameSort context:NULL];//存放首字母以及對應排序后的城市NSDictionary *dic = [NSDictionary dictionaryWithObject:sortArr forKey:allCityFirstCharArray[i]];//加入最終數組[allCityArray addObject:dic];}return allCityArray; }//若第一個字的第一個字母相同,則按第一個字的第二個字母比較,若第一個字的字母完全相同,按第二個字的首字母繼續排序,依此類推,也可以根據自己的業務需求定制更復雜的比較邏輯 NSInteger nickNameSort(id cityFitst, id citySecond, void *context){//類型轉換CCCityModel *cityF = (CCCityModel *)cityFitst;CCCityModel *cityS = (CCCityModel *)citySecond;return? [cityF.name localizedCompare:cityS.name]; }//獲取漢字首字母 - (NSString *)firstCharactor:(NSString *)aString{//轉成了可變字符串NSMutableString *str = [NSMutableString stringWithString:aString];//先轉換為帶聲調的拼音CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformMandarinLatin,NO);//再轉換為不帶聲調的拼音CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics,NO);//轉化為大寫拼音NSString *pinYin = [str capitalizedString];//獲取并返回首字母return [pinYin substringToIndex:1];}

通過以上方法得到一個按字母分組排序后的數組作為tableview的數據源,然后實現tableview的相關方法展示到界面上即可,這里已經沒有什么難度就不再敘說。

然后是右側索引的創建,這里使用的是DSectionIndexView,也很簡單,可參考https://www.jianshu.com/p/d4213ea7e058。

最后是上邊搜索功能,我這里是將從服務器獲取的未分組排序的數組緩存了,搜索都是操作的該數組生成新的數據源然后刷新tableview。

https://www.jianshu.com/p/69ff8ed1857f多音字處理方法

總結

以上是生活随笔為你收集整理的城市列表排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费啪视频 | 一级特黄欧美 | 牛牛影视一区二区三区 | 亚洲精品视频大全 | 亚洲精品视频导航 | 国产精品无码免费专区午夜 | 少妇三级全黄 | 久久9966| 久草视频免费在线 | mm1313亚洲精品 | 99免费国产 | 日韩成人欧美 | 日韩影院一区 | 吊侵犯の奶水授乳羞羞漫画 | 天堂99| 国外成人免费视频 | 韩国三级hd中文字幕 | 成人做爰黄| 性大毛片视频 | 久久一区二区视频 | 亚洲国产成人一区二区 | 国产成人精品免费看视频 | 午夜精品福利电影 | 天天操天天干天天干 | 女人下面无遮挡 | 国产精品亚洲第一 | 日韩欧美黄色 | 91亚洲视频在线观看 | 国产日韩欧美精品在线 | 精精国产| 国产精品无码99re | 伊人久久视频 | 精品人伦一区二区三区蜜桃免费 | 91 久久| 亚洲天堂免费视频 | 国产精品成人va在线观看 | 中文日韩在线观看 | 欧美亚洲第一页 | 草久av| 丝袜毛片| 免费超爽大片黄 | 少妇xxxx69| 校园春色中文字幕 | 国产欧美一区二区三区另类精品 | 自宅警备员在线观看 | 亚洲一区二区三区高清 | 妞妞av| 亚洲自拍天堂 | 2024国产精品 | 国产九九九九九 | 国产白丝av| 日韩精品在线免费观看 | 黄色片的网站 | 国内精品在线观看视频 | 日本三级大片 | 久久精品视频免费看 | 九九九九精品九九九九 | 国产精品自拍第一页 | 女人一区二区 | 日本免费专区 | 亚洲在线观看免费视频 | 日本在线不卡一区二区 | 免费亚洲一区二区 | 强伦人妻一区二区三区视频18 | 婷婷综合亚洲 | www.rihan| 福利一区二区 | 日本嫩草影院 | 狠狠欧美 | 欧美伦理片 | 成人爱爱网站 | 国产美女网 | 大奶一区| 国产白丝喷水 | 色狠狠一区 | 性一交一乱一伧老太 | 久久有精品 | 人妻aⅴ无码一区二区三区 阿v免费视频 | 奇米av在线 | 国产视频精品一区二区三区 | 黄色一级小说 | 3d毛片 | 超碰97人 | 成人精品av | 丝袜 亚洲 另类 欧美 重口 | 性色在线| 亚洲一区 中文字幕 | 亚洲天堂导航 | www.99视频| 国产欧美第一页 | 奇米影视一区二区 | 亚洲无码高清精品 | 又黄又骚的视频 | 97国产免费 | 午夜激情视频在线播放 | 特级大胆西西4444人体 | 超碰色偷偷 | 欧美日韩小视频 | 瑟瑟视频在线免费观看 |