重写NSArray与NSDictionary的descriptionWithLocale方法
更新1--2017年9月7日
最近发现,自从升级到Xcode8以后,字典和数组的descriptionWithLocale都不再被调用。后来使用
- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level来取代,一切又恢复到正常。望周知。
重写NSArray的descriptionWithLocale方法:
NSArray+log.h
1 2 3 | #import <Foundation/Foundation.h> @interface NSArray (log) @end |
NSArray+log.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 | #import "NSArray+log.h" @implementation NSArray (log) - ( NSString *)descriptionWithLocale:( id )locale { NSMutableString *string = [ NSMutableString string]; // 开头有个[ [string appendString:@ "[\n" ]; // 遍历所有的元素 [ self enumerateObjectsUsingBlock:^( id obj, NSUInteger idx, BOOL *stop) { [string appendFormat:@ "\t%@,\n" , obj]; }]; // 结尾有个] [string appendString:@ "]" ]; // 查找最后一个逗号 NSRange range = [string rangeOfString:@ "," options: NSBackwardsSearch ]; if (range.location != NSNotFound ) [string deleteCharactersInRange:range]; return string; } @end |
重写NSDictionary的descriptionWithLocale方法:
NSDictionary.h
1 2 3 | #import <Foundation/Foundation.h> @interface NSDictionary (log) @end |
NSDictionary.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 | #import "NSDictionary+log.h" @implementation NSDictionary (log) - ( NSString *)descriptionWithLocale:( id )locale { NSMutableString *string = [ NSMutableString string]; // 开头有个{ [string appendString:@ "{\n" ]; // 遍历所有的键值对 [ self enumerateKeysAndObjectsUsingBlock:^( id key, id obj, BOOL *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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了