日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios字典存bool_#iOS 打印中文字典,数组,控制台输出中文,并保持缩进格式

發布時間:2024/10/12 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios字典存bool_#iOS 打印中文字典,数组,控制台输出中文,并保持缩进格式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為了方便調試我們經常需要在控制臺打印數組/字典信息,但是如果含有中文,打印出來的就是一堆看不懂的信息(其實是Unicode編碼),影響開發效率.

本文目標:

使用NSLog能打印中文字典/數組

在控制臺使用 po 命令 顯示的調試信息也是中文的

2016-12-2 更新

支持對控件的打印,比如view.subviews

運用的是方法交換,只是對系統的debugDescription方法做轉碼處理,因此格式保留為系統風格

只在DEBUG模式下有效,對線上版本無干擾

效果:

用NSLog打印效果

控制臺使用po命令效果

如何使用

直接拖進項目中去即可.非常簡單.

解決NSLog打印中文問題

對于NSLog能打印中文字典/數組這個問題,首先看看網上的普通做法: 就是重新寫一個字典和數組的分類,重寫他們的- (NSString *)descriptionWithLocale:(id)locale這個方法

代碼如下:

@implementation NSDictionary (Log)

- (NSString *)descriptionWithLocale:(id)locale

{

NSMutableString *string = [NSMutableString string];

// 開頭有個{

[string appendString:@"{\n"];

// 遍歷所有的鍵值對

[self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOLBOOL *stop) {

[string appendFormat:@"\t%@", key];

[string appendString:@" : "];

[string appendFormat:@"%@,\n", obj];

}];

// 結尾有個}

[string appendString:@"}"];

// 查找最后一個逗號

NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];

if (range.location != NSNotFound)

[string deleteCharactersInRange:range];

return string;

}

@end

@implementation NSArray (Log)

- (NSString *)descriptionWithLocale:(id)locale

{

NSMutableString *string = [NSMutableString string];

// 開頭有個[

[string appendString:@"[\n"];

// 遍歷所有的元素

[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOLBOOL *stop) {

[string appendFormat:@"\t%@,\n", obj];

}];

// 結尾有個]

[string appendString:@"]"];

// 查找最后一個逗號

NSRange range = [string rangeOfString:@"," options:NSBackwardsSearch];

if (range.location != NSNotFound)

[string deleteCharactersInRange:range];

return string;

} 性能呢

@end

```

這樣做可以解決問題,但是存在個問題:

* 打印出來的格式不規范,看起來別扭,括號,大括號位置基本沒法對上.

說說我的思路:基本上和上面的一致,需要重寫`- (NSString *)descriptionWithLocale:(id)locale`這個方法,不同的是,直接調用`self的description`方法,然后對返回的字符串進行處理,將其轉換為中文.

代碼如下:

給NSString寫的分類處理Unicode的編碼

```

- (NSString *)unicodeString{

NSString *tempStr1 = [self stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];

NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];

NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];

NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];

NSPropertyListFormat format = NSPropertyListOpenStepFormat;

NSString *returnStr = [NSPropertyListSerialization propertyListWithData:tempData options:NSPropertyListImmutable format:&format error:nil];

return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"];

}

```

給NSDictionary和NSArray寫的分類中:

```

- (NSString *)descriptionWithLocale:(id)locale{

return self.description.unicodeString;

}

```

到此,用NSLog就能打印出規范的中文了,效果如下:

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1666610-d20ac35500d0fca3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

####解決控制臺調試命令`po`出來的不是中文問題:

方案和上面的基本差不多,能用系統的方法就用系統的,畢竟系統的穩定,速度快.

原理:使用'po'命令會調用`debugDescription`這個方法,這個返回調試環境下的信息,不建議重寫`description`這個方法.

代碼如下:

```

- (NSString *)descriptionWithLocale:(id)locale{

return self.description.unicodeString;

}

- (NSString *)debugDescription{

return self.description.unicodeString;

}

```

到此,使用`po`命令就可以查看包含中文的信息了.

![Paste_Image.png](http://upload-images.jianshu.io/upload_images/1666610-18505aeae078ea48.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

附上最終github鏈接直接拖到項目中即可使用:

總結

以上是生活随笔為你收集整理的ios字典存bool_#iOS 打印中文字典,数组,控制台输出中文,并保持缩进格式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产午夜手机精彩视频 | 日韩欧美手机在线 | 亚洲精品乱码久久久久99 | 少妇久久久久久 | 亚洲自拍成人 | 成人综合婷婷国产精品久久 | 韩国三级做爰视频 | 嫩草研究院在线观看 | 四虎精品在线观看 | 污污网站在线观看 | 国产又粗又猛又爽又黄无遮挡 | 爽爽影院免费观看 | 秋霞成人 | 婷婷视频| 日韩国产第一页 | 国内外成人免费视频 | av福利片 | 一本加勒比hezyo黑人 | 800av在线播放| 艳妇乳肉豪妇荡乳 | 香蕉色视频 | 在线观看www | av福利在线播放 | 中文写幕一区二区三区免费观成熟 | 蜜桃av噜噜 | 国内精品久久久久久久影视简单 | 激情网av | 999精品在线观看 | 国产精品3区 | 亚洲综合色在线 | 国产免费无遮挡 | 他趴在我两腿中间添得好爽在线看 | 精品一区二区三区在线观看视频 | 国产香蕉9 | 台湾佬成人中文网222vvv | 国产肉体ⅹxxx137大胆 | 欧美性欧美zzzzzzzzz | 欧美大片视频在线观看 | 黄色精品免费 | 少妇毛片一区二区三区粉嫩av | 乱一色一乱一性一视频 | 欧洲美女粗暴牲交免费观看 | 久久这里只有精品9 | 天天综合永久入口 | 亚洲成人av影片 | 欧美精品一 | 女同av网站 | 国产精品免费一区二区三区在线观看 | 人人干97| 亚洲二区精品 | 丰满大乳奶做爰ⅹxx视频 | 亚洲成av人片在www色猫咪 | 欧洲亚洲激情 | 亚洲欧美日韩另类在线 | 日韩熟女一区二区 | 五月天导航 | 麻豆免费观看视频 | 操人网 | 黑人三级视频 | 久久免费精品 | 中文字幕在线观看一区二区三区 | www国产com | 在线播放91| 精品少妇一区二区三区 | 岳睡了我中文字幕日本 | 国产在线中文 | 久久牛牛 | 天天插夜夜操 | 日韩精品一区二区亚洲av观看 | 午夜免费在线 | 懂色一区二区 | 筱田优全部av免费观看 | 天堂免费在线视频 | 偷拍网亚洲 | 美女的胸给男人玩视频 | 性欧美激情 | chinese国产精品 | 朝桐光在线视频 | 日韩在线观看视频一区二区三区 | 国产精品探花一区二区在线观看 | 午夜小视频网站 | 成人自拍偷拍 | 98色 | 免费日本黄色 | 天天色一色| 精品国产乱码久久久久久浪潮 | 男男做爰猛烈啪啪高 | 一区二区三区久久久 | 99久久香蕉| 91精品人妻一区二区三区 | 大尺度激情吻胸视频 | 91成人短视频 | 亚洲 欧美 日韩 综合 | 亚洲自拍成人 | 国产日产精品一区 | 99久久亚洲精品日本无码 | 中文字幕一区二区人妻视频 | 欧美老司机 | 国产精品福利片 |