国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - iOS中解決Xcode9的Log日志無法輸出中文的問題小結

iOS中解決Xcode9的Log日志無法輸出中文的問題小結

2021-04-05 15:42kuangdacaikuang IOS

這篇文章主要介紹了iOS中解決Xcode9的Log日志無法輸出中文的問題小結,需要的朋友可以參考下

問題描述

xcode的log日志輸出中文的問題,一般都是重寫nsarray,nsdictionary的- (nsstring *)descriptionwithlocale:(id)locale;方法進行處理,最近升級到xcode9會后發現原來的處理邏輯也無法滿足輸出中文的需求,后臺返回的狀態描述涉及到中文的都變成了unicode編碼,其實這是重寫的方法失效的問題,因為xcode默認輸出nsarray,nsdictionary的中文都是unicode編碼

正確的解決方案如下, 創建nsarray+zylog分類

nsarray+zylog.h文件

?
1
2
3
4
5
6
7
8
9
10
11
12
//
// nsarray+zylog.h
// zylog
//
// created by zhouyu on 17/11/08.
// copyright © 2017年 zhouyu. all rights reserved.
//
#import <foundation/foundation.h>
@interface nsarray (zylog)
@end
@interface nsdictionary (zylog)
@end

nsarray+zylog.m文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
//
// nsarray+zylog.m
// zylog
//
// created by zhouyu on 17/11/08.
// copyright © 2017年 zhouyu. all rights reserved.
//
#import "nsarray+zylog.h"
@implementation nsarray (zylog)
#ifdef debug
- (nsstring *)description {
 return [self zy_descriptionwithlevel:1];
}
-(nsstring *)descriptionwithlocale:(id)locale{
 return [self zy_descriptionwithlevel:1];
}
- (nsstring *)descriptionwithlocale:(nullable id)locale indent:(nsuinteger)level {
 return [self zy_descriptionwithlevel:(int)level];
}
/**
 將數組轉化成字符串,文字格式utf8,并且格式化
 @param level 當前數組的層級,最少為 1,代表最外層
 @return 格式化的字符串
 */
- (nsstring *)zy_descriptionwithlevel:(int)level {
 nsstring *subspace = [self zy_getspacewithlevel:level];
 nsstring *space = [self zy_getspacewithlevel:level - 1];
 nsmutablestring *retstring = [[nsmutablestring alloc] init];
 // 1、添加 [
 [retstring appendstring:[nsstring stringwithformat:@"["]];
 // 2、添加 value
 [self enumerateobjectsusingblock:^(id _nonnull obj, nsuinteger idx, bool * _nonnull stop) {
  if ([obj iskindofclass:[nsstring class]]) {
   nsstring *value = (nsstring *)obj;
   value = [value stringbyreplacingpercentescapesusingencoding:nsutf8stringencoding];
   nsstring *substring = [nsstring stringwithformat:@"\n%@\"%@\",", subspace, value];
   [retstring appendstring:substring];
  } else if ([obj iskindofclass:[nsarray class]]) {
   nsarray *arr = (nsarray *)obj;
   nsstring *str = [arr zy_descriptionwithlevel:level + 1];
   str = [nsstring stringwithformat:@"\n%@%@,", subspace, str];
   [retstring appendstring:str];
  } else if ([obj iskindofclass:[nsdictionary class]]) {
   nsdictionary *dic = (nsdictionary *)obj;
   nsstring *str = [dic descriptionwithlocale:nil indent:level + 1];
   str = [nsstring stringwithformat:@"\n%@%@,", subspace, str];
   [retstring appendstring:str];
  } else {
   nsstring *substring = [nsstring stringwithformat:@"\n%@%@,", subspace, obj];
   [retstring appendstring:substring];
  }
 }];
 if ([retstring hassuffix:@","]) {
  [retstring deletecharactersinrange:nsmakerange(retstring.length-1, 1)];
 }
 // 3、添加 ]
 [retstring appendstring:[nsstring stringwithformat:@"\n%@]", space]];
 return retstring;
}
/**
 根據層級,返回前面的空格占位符
 @param level 層級
 @return 占位空格
 */
- (nsstring *)zy_getspacewithlevel:(int)level {
 nsmutablestring *mustr = [[nsmutablestring alloc] init];
 for (int i=0; i<level; i++) {
  [mustr appendstring:@"\t"];
 }
 return mustr;
}
#endif
@end
@implementation nsdictionary (zylog)
#ifdef debug
- (nsstring *)description {
 return [self zy_descriptionwithlevel:1];
}
- (nsstring *)descriptionwithlocale:(nullable id)locale {
 return [self zy_descriptionwithlevel:1];
}
- (nsstring *)descriptionwithlocale:(nullable id)locale indent:(nsuinteger)level {
 return [self zy_descriptionwithlevel:(int)level];
}
/**
 * 非字典時,會引發崩潰
 */
- (nsstring *)zy_getutf8string {
 if ([self iskindofclass:[nsdictionary class]] == no) {
  return @"";
 }
 nserror *error = nil;
 nsdata *data = [nsjsonserialization datawithjsonobject:self options:nsjsonwritingprettyprinted error:&error];
 if (error) {
  return @"";
 }
 nsstring *str = [[nsstring alloc] initwithdata:data encoding:nsutf8stringencoding];
 return str;
}
/**
 將字典轉化成字符串,文字格式utf8,并且格式化
 @param level 當前字典的層級,最少為 1,代表最外層字典
 @return 格式化的字符串
 */
- (nsstring *)zy_descriptionwithlevel:(int)level {
 nsstring *subspace = [self zy_getspacewithlevel:level];
 nsstring *space = [self zy_getspacewithlevel:level - 1];
 nsmutablestring *retstring = [[nsmutablestring alloc] init];
 // 1、添加 {
 [retstring appendstring:[nsstring stringwithformat:@"{"]];
 // 2、添加 key : value;
 [self enumeratekeysandobjectsusingblock:^(id _nonnull key, id _nonnull obj, bool * _nonnull stop) {
  if ([obj iskindofclass:[nsstring class]]) {
   nsstring *value = (nsstring *)obj;
   value = [value stringbyreplacingpercentescapesusingencoding:nsutf8stringencoding];
   nsstring *substring = [nsstring stringwithformat:@"\n%@\"%@\" : \"%@\",", subspace, key, value];
   [retstring appendstring:substring];
  } else if ([obj iskindofclass:[nsdictionary class]]) {
   nsdictionary *dic = (nsdictionary *)obj;
   nsstring *str = [dic zy_descriptionwithlevel:level + 1];
   str = [nsstring stringwithformat:@"\n%@\"%@\" : %@,", subspace, key, str];
   [retstring appendstring:str];
  } else if ([obj iskindofclass:[nsarray class]]) {
   nsarray *arr = (nsarray *)obj;
   nsstring *str = [arr descriptionwithlocale:nil indent:level + 1];
   str = [nsstring stringwithformat:@"\n%@\"%@\" : %@,", subspace, key, str];
   [retstring appendstring:str];
  } else {
   nsstring *substring = [nsstring stringwithformat:@"\n%@\"%@\" : %@,", subspace, key, obj];
   [retstring appendstring:substring];
  }
 }];
 if ([retstring hassuffix:@","]) {
  [retstring deletecharactersinrange:nsmakerange(retstring.length-1, 1)];
 }
 // 3、添加 }
 [retstring appendstring:[nsstring stringwithformat:@"\n%@}", space]];
 return retstring;
}
/**
 根據層級,返回前面的空格占位符
 @param level 字典的層級
 @return 占位空格
 */
- (nsstring *)zy_getspacewithlevel:(int)level {
 nsmutablestring *mustr = [[nsmutablestring alloc] init];
 for (int i=0; i<level; i++) {
  [mustr appendstring:@"\t"];
 }
 return mustr;
}
#endif
@end

效果

iOS中解決Xcode9的Log日志無法輸出中文的問題小結

而且直接就是json串,復制log日志,直接在json格式化工具中使用

 

iOS中解決Xcode9的Log日志無法輸出中文的問題小結

iOS中解決Xcode9的Log日志無法輸出中文的問題小結

參考

jllogencoding

總結

以上所述是小編給大家介紹的ios中解決xcode9的log日志無法輸出中文的問題小結,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://blog.csdn.net/kuangdacaikuang/article/details/78496549

延伸 · 閱讀

精彩推薦
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111312021-03-15
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5282021-01-16
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 中国女人黄色大片 | 狠狠爱天天操 | 在线日韩一区二区 | 国产精品亚洲第一区在线暖暖韩国 | 亚洲国产精品久久久久久久久久久 | 久久久久久免费毛片精品 | 欧美日韩精品久久久免费观看 | 亚洲国产成人在线 | 凹凸日日摸日日碰夜夜爽孕妇 | 久久99操 | 一区二区三区在线免费视频 | jdav视频在线观看免费 | 美女一区二区三区 | 精品久久一区二区 | 亚洲国产欧美一区二区三区丁香婷 | 全部古装三级在线播放 | 欧美a级成人淫片免费看 | 久久精品久久久久电影 | 欧美日韩精品免费观看 | 黄色成人在线视频 | 欧美在线1 | 麻豆美女| 国产综合视频 | 久久久亚洲综合 | 欧美日本在线观看 | 成人aaa视频 | 欧美午夜精品久久久 | 黄色动漫在线观看 | 国产精品1区2区3区 久久免费一区 | 在线视频a | 国产精品成人国产乱一区 | 亚洲精品免费在线视频 | 久久精品2019中文字幕 | 亚洲一区二区三区免费视频 | 日韩精品久久久 | 人妖天堂狠狠ts人妖天堂狠狠 | 国产成人天天爽高清视频 | 国产999精品久久久影片官网 | 久久精品国产久精国产 | 精品在线播放 | 天天摸天天干 |