BMChineseSort.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. //
  2. // BMChineseString.m
  3. //
  4. // Created by Baymax on 16/2/11.
  5. // Copyright (c) 2016年 Baymax. All rights reserved.
  6. //
  7. #import <Foundation/Foundation.h>
  8. /**
  9. 排序主体类
  10. */
  11. @interface BMChineseSort : NSObject
  12. /**
  13. 根据汉字返回汉字的拼音
  14. @param word 转换的汉字
  15. @return 返回对应的拼音
  16. */
  17. +(NSString *)transformChinese:(NSString *)word;
  18. /**
  19. 异步获取拼音分组排序 (分组)
  20. @param objectArray 需要排序的数据源 可以是自定义模型数组,字符串数组,字典数组
  21. @param key 如果是字符串数组key传nil, 否则传入需要排序的字符串属性,或是字符串字段
  22. @param finish 异步回调block isSuccess为no, 打开打印功能查看原因
  23. */
  24. +(void)sortAndGroup:(NSArray*)objectArray key:(NSString *)key finish:(void (^)(bool isSuccess, NSMutableArray *unGroupArr, NSMutableArray *sectionTitleArr, NSMutableArray<NSMutableArray*>* sortedObjArr))finish;
  25. @end
  26. /**
  27. 排序参数设置类
  28. */
  29. @interface BMChineseSortSetting : NSObject
  30. +(BMChineseSortSetting*)share;
  31. /**
  32. 排序的时间主要花在 中文转拼音上 sortMode 选择转换的方法 default is 2
  33. sortMode = 1 使用原生CFStringTransform 方法转换,比较耗时
  34. sortMode = 2 使用汉字码表对应的首字母码表 通过编码顺序查找 比较快
  35. 码表来源于网络 不保证准确性(除了多音字没发现有错误),可以码表配合polyphoneMapping手动修改想要的映射
  36. */
  37. @property (nonatomic,assign) NSInteger sortMode;
  38. /**
  39. 是否打印所用时间。 default is YES
  40. */
  41. @property (nonatomic,assign) BOOL logEable;
  42. /**
  43. 特殊字符最后单独分组所用的 分组名称。 default is @“#”
  44. */
  45. @property (strong, nonatomic) NSString * specialCharSectionTitle;
  46. /**
  47. 特殊字符所在 位置 YES = 开头,NO = 结尾, defalut is @"YES"
  48. */
  49. @property (nonatomic,assign) BOOL specialCharPositionIsFront;
  50. /**
  51. 剔除 特定字符开头的对象,不出现在最终结果集中,不要与 specialCharSectionTitle 冲突。 default is ""
  52. eg: 过滤所有数字开的对象 ignoreModelWithPrefix = @"0123456789"
  53. */
  54. @property (strong, nonatomic) NSString * ignoreModelWithPrefix;
  55. /**
  56. 常用错误多音字 手动映射
  57. 已经识别了:
  58. 重庆=CQ,厦门=XM,长=C,
  59. 如遇到默认选择错误的可以手动映射,使用格式{"匹配的文字":"对应的首字母(大写)"}
  60. eg:.polyphoneMapping = @{"长安":"CA","厦门":"XM"}
  61. 如有发现常用的多音字 也可以在issue里提出来 定期更新
  62. */
  63. @property (strong, nonatomic) NSMutableDictionary * polyphoneMapping;
  64. @end