一、在解析json数据的时候,得到的集合对象或者数组对象在用%@打印的时候回出现类似乱码的情况。如图:
在iOS中打印字典或者数组对象,系统会默认调用字典对象和数组对象的descriptionWithLocale:方法。所以解决方案就是增加在.m文件中重写了两个descriptionWithLocale:方法。以后用的时候直接将文件拖进项目。
1 // 2 // NSDictionary+Log.m 3 // 05-掌握-多值参数 4 // 5 // Created by xiaomage on 15/7/13. 6 // Copyright (c) 2015年 小码哥. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @implementation NSDictionary (Log) 12 - (NSString *)descriptionWithLocale:(id)locale 13 { 14 NSMutableString *string = [NSMutableString string]; 15 16 // 开头有个{ 17 [string appendString:@"{\n"]; 18 19 // 遍历所有的键值对 20 [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 21 [string appendFormat:@"\t%@", key]; 22 [string appendString:@" : "]; 23 [string appendFormat:@"%@,\n", obj]; 24 }]; 25 26 // 结尾有个} 27 [string appendString:@"}"]; 28 29 // 查找最后一个逗号 30 NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch]; 31 if (range.location != NSNotFound) 32 [string deleteCharactersInRange:range]; 33 34 return string; 35 } 36 @end 37 38 @implementation NSArray (Log) 39 40 - (NSString *)descriptionWithLocale:(id)locale 41 { 42 NSMutableString *string = [NSMutableString string]; 43 44 // 开头有个[ 45 [string appendString:@"[\n"]; 46 47 // 遍历所有的元素 48 [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 49 [string appendFormat:@"\t%@,\n", obj]; 50 }]; 51 52 // 结尾有个] 53 [string appendString:@"]"]; 54 55 // 查找最后一个逗号 56 NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch]; 57 if (range.location != NSNotFound) 58 [string deleteCharactersInRange:range]; 59 60 return string; 61 } 62 63 @end
- 效果图