在iOS開發中,多多少少的朋友在開發的過程中,測試數據的時候可能會碰到后台打印的時候不能正確的打印出正常的漢字,打印出一些影響判斷的字符,經常需要查看數組中得元素是否是自己想要的,但是蘋果並沒有對直接打印數組中得中文作處理,直接打印就會出現一堆很討厭的東西,解決其實很簡單,就是需要通過為NSArray添加分類.
可以在同一個類文件中書寫兩個類的聲明,這樣可以節省空間,因為是針對於同樣的功能點.
在.h文件中的聲明
#import <Foundation/Foundation.h>
//數組的打印
@interface NSArray (Log)
@end
//字典的打印
@interface NSDictionary (Log)
@end
在.m文件中的實現
//數組的實現
#import "NSArray+Log.h"
@implementation NSArray (Log)
// 只需要在分類中,重寫這個方法的實現,不需要導入分類文件就會生效
- (NSString *)descriptionWithLocale:(id)locale
{
// 定義用於拼接字符串的容器
NSMutableString *stringM = [NSMutableString string];
// 拼接開頭
[stringM appendString:@"(\n"];
// 拼接中間的數組元素
[self enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
[stringM appendFormat:@"\t%@,\n",obj];
}];
// 拼接結尾
[stringM appendString:@")\n"];
return stringM;
}
@end
//字典的實現
@implementation NSDictionary (Log)
// 只需要在分類中,重寫這個方法的實現,不需要導入分類文件就會生效
- (NSString *)descriptionWithLocale:(id)locale
{
// 定義用於拼接字符串的容器
NSMutableString *stringM = [NSMutableString string];
// 拼接開頭
[stringM appendString:@"{\n"];
// 遍歷字典,拼接內容
[self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
[stringM appendFormat:@"\t%@ = %@;\n",key,obj];
}];
// 拼接結尾
[stringM appendString:@"}\n"];
return stringM;
}
@end
這兩個文件需要用得時候可以直接復制進工程,不需要導入會自動的對數組和字典打印進行處理,使用相當方便,為我閑暇之余提供的一點小便利方法.