1.中文輸出
對于服務器返回的數(shù)據(jù),解析之后直接打印乌昔,如果數(shù)據(jù)中原本有中文隙疚,可能會出現(xiàn)中文亂碼的結(jié)果:
image.png
為了避免這個問題壤追,可以通過類別來重寫系統(tǒng)和打印的結(jié)果:
步驟:
1.新創(chuàng)建文件名:Foundation+Log.m后綴的這個文件磕道,對頭就是.
m文件
2.然后把一下源碼全部拷貝進去就行了
Foundation+Log.m
1 //
2 // NSDictionary+Log.m
3 // 01-掌握-多值參數(shù)和中文輸出
4 //
5
6 #import <Foundation/Foundation.h>
7
8 // 重寫系統(tǒng)的打印方法,
9 // 需要知道的是NSDictionary和NSArray各自都有打印方法
10 // 也就是說行冰,你重寫了NSArray打印重寫方法溺蕉,打印NSArray對象才會執(zhí)行重寫的方法
11
12 // 如果是通過子類來重寫父類系統(tǒng)的方法,那么使用的時候就需要導入這個子類
13 // 但是通過類別重寫系統(tǒng)方法悼做,就不需要import導入疯特,因為系統(tǒng)中導入了已經(jīng)有了同名的被重寫的方法了,系統(tǒng)會優(yōu)先加載類別里的重寫的方法肛走,連.h聲明文件都可以不用了漓雅,因為系統(tǒng)中已經(jīng)有.h聲明文件
14
15 @implementation NSDictionary (Log)
16
17 //控制輸出:對字典或者是數(shù)組進行排版
18 -(NSString *)descriptionWithLocale:(id)locale
19 {
20 NSMutableString *string = [NSMutableString string];
21 //設置開始
22 [string appendString:@"{\n"];
23
24 //設置key-value
25 [self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
26 [string appendFormat:@"%@:",key];
27 [string appendFormat:@"%@,\n",obj];
28 }];
29 //設置結(jié)尾
30 [string appendString:@"}"];
31
32 //刪除最后的逗號
33 NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
34 if (range.location != NSNotFound) {
35 [string deleteCharactersInRange:range];
36 }
37 return string;
38 }
39
40 /*
41 -(NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level
42 {
43 NSMutableString *string = [NSMutableString string];
44 //設置開始
45 [string appendString:@"{"];
46
47 //設置key-value
48 [self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
49
50 [string appendFormat:@"%@:",key];
51 [string appendFormat:@"%@",obj];
52 }];
53 //設置結(jié)尾
54 [string appendString:@"}"];
55 return string;
56 }
57 */
58 @end
59
60
61 @implementation NSArray (Log)
62
63 //控制輸出:對字典或者是數(shù)組進行排版
64 -(NSString *)descriptionWithLocale:(id)locale
65 {
66 NSMutableString *string = [NSMutableString string];
67 //設置開始
68 [string appendString:@"["];
69
70 //設置key-value
71 [self enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
72 [string appendFormat:@"%@,",obj];
73
74 }];
75 //設置結(jié)尾
76 [string appendString:@"]"];
77
78 NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];
79 if (range.location != NSNotFound) {
80 [string deleteCharactersInRange:range];
81 }
82
83 return string;
84 }
85
86 @end
image.png