iOS 通訊錄排序

2021-07-10 13:48:26 字數 1446 閱讀 3973

在很多時候需要處理分組資訊 和 資料排序 按時間 字母 排序,類似通訊錄

如下圖

做這個 我的思路是用字典··

這裡按字母abcd排序

首先把中文轉換成拼音, 擷取第乙個字母 然後插入字典 字母作為key 並根據key對應的value建立為陣列,第二次取出字典中所有的key ,判斷新的key是否在所有key中,在 找出對應的value插入到陣列中, 不在重新建立。一般賬單是按時間排序的,大同小異

/**

* 新增手機聯絡人分組資訊處理

* * @param mobilecontactsmodel 手機聯絡人資訊

* @param mobilecontactsdictionary 儲存手機聯絡人字典

* * @return 返回處理好的手機聯絡人字典

*/+ (nsmutabledictionary *)datadealwithmobilecontactsmodel:(mobilecontactsmodel *)mobilecontactsmodel mobilecontactsdictionary:(nsmutabledictionary *)mobilecontactsdictionary

// 在根據拼音擷取第乙個字元 判斷首字母是否在字典的所有key中, 存在取出改key對應的陣列 把該物件存到陣列中, 不存在 把這個當做key 建立對應的陣列,在存數該陣列中

nsarray *keyall = [mobilecontactsdictionary allkeys];

if ([keyall containsobject:keytemp])

else

}return mobilecontactsdictionary;

}

下面是排序的通用方法,傳入乙個陣列 排序,就是字典中所有的key

/**

* 資料排序 按字母安排(abcd... 最後乙個#號)

* * @param array 需要排序的陣列

* * @return 返回排序好的陣列

*/+ (nsarray *)dataarrayusingcomparator:(nsarray *)array

]; [arraytemp removeallobjects];

[arraytemp addobjectsfromarray:arraytemp2];

[arraytemp addobject:@"#"];

nsarray *resultarray = [[nsarray alloc] initwitharray:arraytemp];

return resultarray;

}else];}

}

隨手寫寫 表達的不清楚,慢慢積累···

iOS通訊錄排序與顯示

參考 補充 在使用的過程中發現,如果原字串中含有下劃線這樣一些特殊字串會被刪除過濾掉,所以我在 chinesestring.m中把 nsmutablearray returnsortchinesearrar nsarray stringarr 中的該方法呼叫遮蔽了,不然我在使用的時候該字串跟原字串不...

通訊錄排序

這一題用了我之前從沒有嘗試用過的結構體,感覺還不錯。輸入n個朋友的資訊,包括姓名 生日 號碼,本題要求編寫程式,按照年齡從大到小的順序依次輸出通訊錄。題目保證所有人的生日均不相同。輸入格式 輸入第一行給出正整數n 10 隨後n行,每行按照 姓名 生日 號碼 的格式給出一位朋友的資訊,其中 姓名 是長...

通訊錄排序

輸入n個朋友的資訊,包括姓名 生日 號碼,本題要求編寫程式,按照年齡從大到小的順序依次輸出通訊錄。題目保證所有人的生日均不相同。輸入格式 輸入第一行給出正整數n 10 隨後n行,每行按照 姓名 生日 號碼 的格式給出一位朋友的資訊,其中 姓名 是長度不超過10的英文本母組成的字串,生日 是yyyym...