一、在解析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
- 效果圖

