【iOS開發】---- 通訊錄字典序
阿新 • • 發佈:2019-02-15
最近專案中有個客戶列表,需要對客戶(Customer)做字典序排列且按A~Z~#分組展示。下面記錄了我的實現方法(如果你有更好的方法,請不吝分享):
最終目標: 獲得一個字典dic{key:value,…}, key:A~Z和#, value:是一個數組,儲存customer物件,物件按名稱字典序排列。 實現步驟: 1.獲取客戶列表資料,進行json解析時將客戶名稱轉拼音(且均轉為大寫)給Customer物件儲存,解析完成得到儲存Customer物件的陣列customersArray; 2.對customersArray進行排序,讓Customer物件以字典序排列,得到排序後的陣列customersSortedArray(我這裡得到的順序是按照#~A~Z排列的);for (int i = 0; i < [arr count]; i++) { Customer *cstr= arr[i]; NSString *firstLetter = [[NSString stringWithFormat:@"%c",[cstr.phonetic characterAtIndex:0]] uppercaseString]; NSString *key = [AtoZ containsObject:firstLetter] ? firstLetter : @"#"; NSMutableArray *arrStartWithKey = mDic[key]; if (!arrStartWithKey) { arrStartWithKey = [[NSMutableArray alloc] init]; [mDic setObject:arrStartWithKey forKey:key]; [arrStartWithKey release]; } [arrStartWithKey addObject:cstr]; }
4.將獲得的資料dic展示在介面即可。 這裡有點不完善的地方,就是多音字,上面在轉拼音過程中,有個加強版,但也只能解決少許問題,這個比較麻煩,暫時還沒有解決辦法,如果你有解決辦法,請分享一下,謝謝~