美文网首页
服务器返回中文乱码问题

服务器返回中文乱码问题

作者: 凉白开0072 | 来源:发表于2017-10-17 09:34 被阅读11次

本人小白,欢迎各位大佬补充指点
代码如下

思路:
1.随意建立一个.m文件即可,比如FoundLog.m
2.分别重写NSArray/NSDictionary原类的方法:
-(NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level;
之前是用-(NSString *)descriptionWithLocale:(id)locale,但是自从XCode之后,该方法不调用了,只能用上面的方法了
注意: 不需要.h文件,因为通常写分类是添加新的方法,新的方法要写在.h文件中声明,而且使用里面的方法必须要导入该分类的.h文件,但是这个是重写原类的原有方法,因此不需要.h文件
编译时,只会编译所有的.m文件,当发现你重写了方法,到时就会优先调用分类中重写的方法

//随意建一个.m文件即可,比如FoundLog.m
#import <Foundation/Foundation.h>
@implementation NSDictionary (Log)
/**
 该方法就是该NSArray(NSExtendedArray)分类中的一个方法
 当打印字典/数组时会调用字典/数组的这个方法,这个方法返回什么他就打印什么
 -(NSString *)descriptionWithLocale:(id)locale
 但是Xcode8以后,不会调用上面那个方法了,但会调用下面这个方法
 */
- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
{
    NSMutableString *string = [NSMutableString string];
    // \n换行符,\t首行缩进
    // 开头有个{
    [string appendString:@"{\n"];
    // 遍历所有的键值对
    [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        //appendFormat:拼接内容,可以传参数
        [string appendFormat:@"\t%@", key];
        [string appendString:@" : "];
        [string appendFormat:@"%@,\n", obj];
    }];
    // 结尾有个}
    [string appendString:@"}"]; 
    // 查找最后一个逗号
    //NSBackwardsSearch反过来搜索,正常情况下是按顺序搜索,只会搜索到第一个","
    NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
    //打印[]空数组时会报错
    if (range.location != NSNotFound)
    [string deleteCharactersInRange:range];
    return string;
}
@end
@implementation NSArray (Log)
- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
{
    NSMutableString *string = [NSMutableString string];
    // 开头有个[
    [string appendString:self.count ? @"[\n" : @"["];
    // 遍历所有的元素
    [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        [string appendFormat:@"\t%@,\n", obj];
    }];
    // 结尾有个]
    [string appendString:@"]"];  
    // 查找最后一个逗号
    NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
    if (range.location != NSNotFound)
    [string deleteCharactersInRange:range];
    return string;
}
@end

相关文章

网友评论

      本文标题:服务器返回中文乱码问题

      本文链接:https://www.haomeiwen.com/subject/sdmruxtx.html