如何在工作台打印包含中文字符的数组或字典(非Unicode)

对于数组或者字典中对象均为中文字符串时, 打印为unicode时, 如何正常显示?

  1. 对数组的description方法进行重写
  2. 定义一个新的方法,进行指定字符串的返回
  3. 以下方法仅仅是针对单个数组或者单个字典有效, 对于数组中嵌套字典时, 打印方法无效

数组

  • 使用for循环进行打印
- (NSString *)chineseDescription {
    //  打印数组时以"("打头
    NSMutableString *desc = [NSMutableString stringWithString:@"(\n"];
    
    /*
     取得每一个数组元素, 进行追加字符串操作, 直到追加到最后一个字符时, 进行换行操作
     \" 由于打印中文字符, 所以对元素都手动添加双引号, 可自行决定是否添加
     \t 代表跳至下一个制表符位置
     */
    for (int i = 0; i < self.count; i++) {
        NSString *string = self[i];
        [desc appendFormat:@"\t\"%@\"", string];
        if (i != self.count - 1) {
            [desc appendString:@",\n"];
        }
    }
    [desc appendString:@"\n)"];
    return desc;
  • 使用迭代进行打印
- (NSString *)chineseDescription {
    NSMutableString *desc = [NSMutableString stringWithString:@"(\n"];
    
    // 迭代数组中的所有元素, 进行字符串拼接
    [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        [desc appendFormat:@"\t\"%@\",\n", obj];
    }];
    [desc appendString:@")\n"];
    
    // 删除最后一个逗号
    if (self.count > 0) {
        NSRange range = [desc rangeOfString:@"," options:NSBackwardsSearch];
        [desc deleteCharactersInRange:range];
    }
    
    return desc;
}

字典

- (NSString *)chineseDescription {
    
    NSMutableString *desc = [NSMutableString stringWithString:@"{\n"];
    
    /*
     取得每一个键值对, 进行追加字符串操作, 直到追加到最后一组键值对时, 进行换行操作
     \" 由于打印的键值对都是中文字符, 所以对元素都手动添加双引号, 可自行决定是否添加
     \t 代表跳至下一个制表符位置
     */
    [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        [desc appendFormat:@"\t\"%@\" = \"%@\";\n", key, obj];
    }];
    [desc appendString:@"}\n"];
    
    return desc;
}

只想日后回头看看来时的路,能发现自己并不是一无所有。

你可能感兴趣的:(如何在工作台打印包含中文字符的数组或字典(非Unicode))