一个转换算法 包括读取/遍历/转换/写入

只做个人笔记, 可参考代码, 无法直接使用

    NSArray<NSString*>* stateArray=[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"province" ofType:@"plist"]];

    NSDictionary<NSString*,NSArray<NSString*>*>* cityDic=[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"city" ofType:@"plist"]];

    NSMutableDictionary * d = [NSMutableDictionary new];
    
    for (NSString* state in stateArray) {
        for (NSString* city in cityDic[state]) {
            
            NSString* cityPhonetic = [NSString phonetic:city];
            cityPhonetic = [cityPhonetic substringToIndex:1];
            cityPhonetic = [cityPhonetic uppercaseString];
            NSMutableArray * arr = d[cityPhonetic];
            if (arr==nil) {
                arr = [NSMutableArray new];
            }
            [arr addObject:city];
            [d setValue:arr forKey:cityPhonetic];
        }
    }
    
    //DJLog(@"%@",d);
    self.cityDic = d;
    self.stateArray = [self.cityDic.allKeys sortedArrayUsingSelector:@selector(compare:)];
    
    
    
    //把数据保存到沙盒里的plist文件
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *plistPath1= [paths objectAtIndex:0];
    
    NSLog(@"%@",plistPath1);
    //得到完整的路径名
    NSString *fileName = [plistPath1 stringByAppendingPathComponent:@"cityDic.plist"];
    NSString *fileName2 = [plistPath1 stringByAppendingPathComponent:@"citykey.plist"];

    NSFileManager *fm = [NSFileManager defaultManager];
    if ([fm createFileAtPath:fileName contents:nil attributes:nil] ==YES) {
        
        [self.cityDic writeToFile:fileName atomically:YES];
        [self.stateArray writeToFile:fileName2 atomically:YES];
        NSLog(@"文件写入完成");
    }




//NSString的分类:

/**
 *  汉字转拼音
 */
+(NSString *) phonetic:(NSString*)sourceString {
    
    if ([sourceString isEqualToString:@""]) {
        return sourceString;
    }
    //            CFMutableStringRef string = CFStringCreateMutableCopy(NULL, 0, (CFStringRef)city);
    NSMutableString *source = [sourceString mutableCopy];
    
    CFStringTransform((__bridge CFMutableStringRef)source, NULL, kCFStringTransformMandarinLatin, NO);
    CFStringTransform((__bridge CFMutableStringRef)source, NULL, kCFStringTransformStripDiacritics, NO);
    
    if ([[(NSString *)sourceString substringToIndex:1] compare:@"长"] ==NSOrderedSame)
    {
        [source replaceCharactersInRange:NSMakeRange(0, 5)withString:@"chang"];
    }
    if ([[(NSString *)sourceString substringToIndex:1] compare:@"沈"] ==NSOrderedSame)
    {
        [source replaceCharactersInRange:NSMakeRange(0, 4)withString:@"shen"];
    }
    if ([[(NSString *)sourceString substringToIndex:1] compare:@"厦"] ==NSOrderedSame)
    {
        [source replaceCharactersInRange:NSMakeRange(0, 3)withString:@"xia"];
    }
    if ([[(NSString *)sourceString substringToIndex:1] compare:@"地"] ==NSOrderedSame)
    {
        [source replaceCharactersInRange:NSMakeRange(0, 3)withString:@"di"];
    }
    if ([[(NSString *)sourceString substringToIndex:1] compare:@"重"] ==NSOrderedSame)
    {
        [source replaceCharactersInRange:NSMakeRange(0, 5) withString:@"chong"];
    }
    return source;
}