ios 漢字轉拼音

2021-07-04 05:20:41 字數 2590 閱讀 2536

顯示乙個班級的成員列表,有乙個是管理員要排在最上面,下面按照拼音排序實現索引列表,效果圖如下:

查詢資料庫獲取成員列表

1

//成員列表根據 isadmin 字段進行排序查詢——order by isadmin

2 nsmutablearray *members =[[asmemberdao sharedinstance] queryallmembersbygroupid:groupid];3//

根據排序查詢結果第乙個為管理員

4 ascontact *memeberadmin = [members objectatindex:0];

將每個成員的名字轉化成拼音

1

//初始化hanyupinyinoutputformat物件,設定相應的 type

2 hanyupinyinoutputformat *outputformat=[[hanyupinyinoutputformat alloc] init];

3[outputformat settonetype:tonetypewithouttone];

4[outputformat setvchartype:vchartypewithv];

5[outputformat setcasetype:casetypeuppercase];6//

遍歷成員列表,將成員名字 contactname 轉成拼音,並存放到 categoryname 欄位中,用於排序

7 [members enumerateobjectsusingblock:^(id obj, nsuinteger idx, bool *stop) ];

12 [outputformat release];

將成員列表按照拼音字段 categoryname進行排序

1 nssortdescriptor *sortdescriptor = [[nssortdescriptor alloc] initwithkey:@"

categoryname

"ascending:yes];

2 nsarray *array =[[nsarray alloc] initwithobjects:sortdescriptor, nil];

3[members sortusingdescriptors:array];

4[array release];

5 [sortdescriptor release];

定義乙個全域性變數 datadictionary 來組織資料結構

key: 將漢字轉完拼音後的第乙個字母, 也就是上圖 section 中的 a、b、c...

value: 是乙個成員陣列,存放每個 section 下的成員列表

如上圖: a 是字典的乙個 key, 對應的 value 就是成員陣列 ,當然陣列中存放的是成員物件。

1 datadictionary =[[nsmutabledictionary alloc] init];2//

存放每個 section 下的成員陣列

3 nsmutablearray *currentarray =nil;4//

用於獲取拼音中第乙個字母

5 nsrange arange = nsmakerange(0, 1

);6 nsstring *firstletter =nil;7//

遍歷成員列表組織資料結構

8for (ascontact *contact in

members)

13//

獲取拼音中第乙個字母,如果已經存在則直接將該成員加入到當前的成員陣列中,如果不存在,建立成員資料,新增乙個 key-value 結構到 datadictionary 中

14 firstletter =[contact.categoryname substringwithrange:arange];

15if ([datadictionary objectforkey:firstletter] ==nil)

19[currentarray addobject:contact];

20 }

在定義乙個全域性變數allkeys用於顯示索引列表中索引

1

//取出 datadictionary 中的 key 並進行排序

2 allkeys =[[nsmutablearray alloc] initwitharray:[[datadictionary allkeys] sortedarrayusingfunction:sortobjectsbykey context:null]];3//

然後將管理員加入到排好序 allkeys 的最前面

4 [allkeys insertobject:@"

管理員" atindex:0

];5 [datadictionary setobject:[nsarray arraywithobjects:contactadmin, nil] forkey:@"

管理員"];

iOS漢字轉拼音

那麼問題來了,字母和姓氏怎麼對應的呢?系統是老外寫的,不可能像新華字典一樣有個目錄吧?查詢官方文件,在corefoundation框架中找到了cstring這個檔案中的 cfstringtransform函式,其實就這個函式就可以實現漢字轉拼音的功能.在此我分別封裝了乙個類方法和乙個nsstring...

iOS開發 漢字轉拼音

ios其實自帶漢字轉拼音的,無需使用網上的一些demo,最關鍵的是,網上的demo支援有部分問題的,比如不支援繁體字輸入 書本 僅僅支援生僻字部分,比如輸入 魑魅魍魎 而系統自帶的並不一樣,只要字型檔支援的話,都支援的,但是多音字還是不支援的。nsstring str 中國abc人民共和國 齷蹉 書...

漢字轉拼音

region 漢字轉拼音 漢字轉拼音類 用法 crazycoderpinyin.covent 漢字 長度 using system.text.regularexpressions build date 20030610 public class crazycoderpinyin 定義陣列 priva...