日韩性视频-久久久蜜桃-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 打印中文字典,数组,控制台输出中文,并保持缩进格式的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美成人一区二区三区 | 国模一区二区 | 蜜桃91麻豆精品一二三区 | 黄色片子一级 | 伊人成人动漫 | 亚洲自拍av在线 | 少妇无码吹潮 | 亚洲精品国产精品乱码不66 | 少妇精品偷拍高潮白浆 | 四十路av| 蜜桃91丨九色丨蝌蚪91桃色 | 国产精品高清在线观看 | 亚洲图片欧美在线 | 亚洲天堂国产精品 | 久久av影院 | 美女免费视频网站 | 色碰视频| 久久亚洲色图 | 欧美 日韩 国产 中文 | 欧美亚洲日本国产 | 97国产一区 | 欧美人与禽猛交乱配视频 | 国产精品国产精品国产 | 欧洲成人午夜精品无码区久久 | 中文字幕乱码在线人视频 | 国产乱码一区二区三区 | 波多野结衣亚洲一区二区 | 99综合视频 | 国产另类精品 | 成人a级片| 久久久午夜视频 | 秋霞午夜鲁丝一区二区老狼 | 色四虎 | 中文字幕第18页 | 四虎精品欧美一区二区免费 | 深夜福利一区二区三区 | 免费观看日批视频 | 国产激情无码一区二区三区 | 日日日操操操 | 伊人中文字幕在线 | 国产精品极品白嫩 | 免费的a级片 | 精品久久久久久亚洲 | 欧美国产一区二区三区 | 狼人综合网 | 黄瓜视频色版 | 日本三级片在线观看 | 欧美激情久久久 | 日韩视频一区二区 | 国产精品视频久久 | 欧美激情精品久久久久久变态 | 国产人澡人澡澡澡人碰视频 | 在线不卡av电影 | 久久视频中文字幕 | 久久成人综合网 | 免费一区二区视频 | 福利视频导航网 | 午夜黄视频 | 涩涩久久| 成人91av| 一区二区日韩视频 | 中国a毛片 | 麻豆传媒在线免费 | 丁香视频在线观看 | 老司机午夜剧场 | 麻豆午夜 | 欧美日韩中字 | 国产男同gay网站 | 久久精品99久久久 | 国色综合 | 欧美三级欧美成人高清 | 好吊妞精品 | 精品久久久久一区二区 | 国产亚洲无码精品 | 青青草社区视频 | 久久精品99 | 日韩激情视频在线 | 欧美在线观看免费高清 | 欧美视频久久久 | 日本免费中文字幕 | 91久久久久久 | 高清av免费观看 | 日韩视频在线观看免费视频 | 色婷婷综合久久久久中文字幕 | 3o一40一50一6o女人毛片 | 小柔好湿好紧太爽了国产网址 | 日韩人妻无码精品综合区 | 欧美亚洲国产精品 | 蜜臀久久精品久久久用户群体 | 人成在线免费视频 | 一级片一级片 | 亚洲性在线| 婷婷社区五月天 | 日韩精品国产一区二区 | 人妻中文字幕一区二区三区 | 亚洲精品一区二区三区婷婷月 | 捆绑凌虐一区二区三区 | 伊人黄色网 | 亚洲国产精品无码专区 |