Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
DoraemonKit
提交
f8795734
D
DoraemonKit
项目概览
DiDi
/
DoraemonKit
大约 1 年 前同步成功
通知
166
Star
19623
Fork
3062
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DoraemonKit
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f8795734
编写于
8月 19, 2019
作者:
L
LY
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: add unicode decode for console
上级
407c376e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
217 addition
and
0 deletion
+217
-0
iOS/DoraemonKit/Src/Core/Category/Foundation+Doraemon.m
iOS/DoraemonKit/Src/Core/Category/Foundation+Doraemon.m
+217
-0
未找到文件。
iOS/DoraemonKit/Src/Core/Category/Foundation+Doraemon.m
0 → 100755
浏览文件 @
f8795734
//
// Foundation+Doraemon.m
// DoraemonKit
//
// Created by DeveloperLY on 2019/8/18.
//
#import <Foundation/Foundation.h>
#if DEBUG
#define kUnicodeReadable 1
#if kUnicodeReadable
@implementation
NSDictionary
(
UnicodeReadable
)
-
(
NSString
*
)
descriptionWithLocale
:(
id
)
locale
indent
:(
NSUInteger
)
level
{
NSMutableString
*
desc
=
[
NSMutableString
string
];
NSMutableString
*
tabString
=
[[
NSMutableString
alloc
]
initWithCapacity
:
level
];
for
(
NSUInteger
i
=
0
;
i
<
level
;
i
++
)
{
[
tabString
appendString
:
@"
\t
"
];
}
NSString
*
tab
=
@""
;
if
(
level
>
0
)
{
tab
=
tabString
;
}
[
desc
appendString
:
@"{
\n
"
];
// 遍历数组,self就是当前的数组
for
(
id
key
in
self
.
allKeys
)
{
id
obj
=
[
self
objectForKey
:
key
];
if
([
obj
isKindOfClass
:[
NSString
class
]])
{
[
desc
appendFormat
:
@"%@
\t
%@ =
\"
%@
\"
;
\n
"
,
tab
,
key
,
obj
];
}
else
if
([
obj
isKindOfClass
:[
NSArray
class
]]
||
[
obj
isKindOfClass
:[
NSDictionary
class
]]
||
[
obj
isKindOfClass
:[
NSSet
class
]])
{
[
desc
appendFormat
:
@"%@
\t
%@ = %@;
\n
"
,
tab
,
key
,
[
obj
descriptionWithLocale
:
locale
indent
:
level
+
1
]];
}
else
if
([
obj
isKindOfClass
:[
NSData
class
]])
{
// 如果是NSData类型,尝试去解析结果,以打印出可阅读的数据
NSError
*
error
=
nil
;
NSObject
*
result
=
[
NSJSONSerialization
JSONObjectWithData
:
obj
options:
NSJSONReadingMutableContainers
error:
&
error
];
// 解析成功
if
(
error
==
nil
&&
result
!=
nil
)
{
if
([
result
isKindOfClass
:[
NSDictionary
class
]]
||
[
result
isKindOfClass
:[
NSArray
class
]]
||
[
result
isKindOfClass
:[
NSSet
class
]])
{
NSString
*
str
=
[((
NSDictionary
*
)
result
)
descriptionWithLocale
:
locale
indent
:
level
+
1
];
[
desc
appendFormat
:
@"%@
\t
%@ = %@;
\n
"
,
tab
,
key
,
str
];
}
else
if
([
obj
isKindOfClass
:[
NSString
class
]])
{
[
desc
appendFormat
:
@"%@
\t
%@ =
\"
%@
\"
;
\n
"
,
tab
,
key
,
result
];
}
}
else
{
@try
{
NSString
*
str
=
[[
NSString
alloc
]
initWithData
:
obj
encoding
:
NSUTF8StringEncoding
];
if
(
str
!=
nil
)
{
[
desc
appendFormat
:
@"%@
\t
%@ =
\"
%@
\"
;
\n
"
,
tab
,
key
,
str
];
}
else
{
[
desc
appendFormat
:
@"%@
\t
%@ = %@;
\n
"
,
tab
,
key
,
obj
];
}
}
@catch
(
NSException
*
exception
)
{
[
desc
appendFormat
:
@"%@
\t
%@ = %@;
\n
"
,
tab
,
key
,
obj
];
}
}
}
else
{
[
desc
appendFormat
:
@"%@
\t
%@ = %@;
\n
"
,
tab
,
key
,
obj
];
}
}
[
desc
appendFormat
:
@"%@}"
,
tab
];
return
desc
;
}
@end
@implementation
NSArray
(
UnicodeReadable
)
-
(
NSString
*
)
descriptionWithLocale
:(
id
)
locale
indent
:(
NSUInteger
)
level
{
NSMutableString
*
desc
=
[
NSMutableString
string
];
NSMutableString
*
tabString
=
[[
NSMutableString
alloc
]
initWithCapacity
:
level
];
for
(
NSUInteger
i
=
0
;
i
<
level
;
i
++
)
{
[
tabString
appendString
:
@"
\t
"
];
}
NSString
*
tab
=
@""
;
if
(
level
>
0
)
{
tab
=
tabString
;
}
[
desc
appendString
:
@"(
\n
"
];
for
(
id
obj
in
self
)
{
if
([
obj
isKindOfClass
:[
NSDictionary
class
]]
||
[
obj
isKindOfClass
:[
NSArray
class
]]
||
[
obj
isKindOfClass
:[
NSSet
class
]])
{
NSString
*
str
=
[((
NSDictionary
*
)
obj
)
descriptionWithLocale
:
locale
indent
:
level
+
1
];
[
desc
appendFormat
:
@"%@
\t
%@,
\n
"
,
tab
,
str
];
}
else
if
([
obj
isKindOfClass
:[
NSString
class
]])
{
[
desc
appendFormat
:
@"%@
\t\"
%@
\"
,
\n
"
,
tab
,
obj
];
}
else
if
([
obj
isKindOfClass
:[
NSData
class
]])
{
// 如果是NSData类型,尝试去解析结果,以打印出可阅读的数据
NSError
*
error
=
nil
;
NSObject
*
result
=
[
NSJSONSerialization
JSONObjectWithData
:
obj
options:
NSJSONReadingMutableContainers
error:
&
error
];
// 解析成功
if
(
error
==
nil
&&
result
!=
nil
)
{
if
([
result
isKindOfClass
:[
NSDictionary
class
]]
||
[
result
isKindOfClass
:[
NSArray
class
]]
||
[
result
isKindOfClass
:[
NSSet
class
]])
{
NSString
*
str
=
[((
NSDictionary
*
)
result
)
descriptionWithLocale
:
locale
indent
:
level
+
1
];
[
desc
appendFormat
:
@"%@
\t
%@,
\n
"
,
tab
,
str
];
}
else
if
([
obj
isKindOfClass
:[
NSString
class
]])
{
[
desc
appendFormat
:
@"%@
\t\"
%@
\"
,
\n
"
,
tab
,
result
];
}
}
else
{
@try
{
NSString
*
str
=
[[
NSString
alloc
]
initWithData
:
obj
encoding
:
NSUTF8StringEncoding
];
if
(
str
!=
nil
)
{
[
desc
appendFormat
:
@"%@
\t\"
%@
\"
,
\n
"
,
tab
,
str
];
}
else
{
[
desc
appendFormat
:
@"%@
\t
%@,
\n
"
,
tab
,
obj
];
}
}
@catch
(
NSException
*
exception
)
{
[
desc
appendFormat
:
@"%@
\t
%@,
\n
"
,
tab
,
obj
];
}
}
}
else
{
[
desc
appendFormat
:
@"%@
\t
%@,
\n
"
,
tab
,
obj
];
}
}
[
desc
appendFormat
:
@"%@)"
,
tab
];
return
[
desc
stringByReplacingOccurrencesOfString
:
@",
\n
"
withString
:
@"
\n
"
options
:
NSBackwardsSearch
range
:
[
desc
rangeOfString
:
@",
\n
"
options
:
NSBackwardsSearch
]];
}
@end
@implementation
NSSet
(
UnicodeReadable
)
-
(
NSString
*
)
descriptionWithLocale
:(
id
)
locale
indent
:(
NSUInteger
)
level
{
NSMutableString
*
desc
=
[
NSMutableString
string
];
NSMutableString
*
tabString
=
[[
NSMutableString
alloc
]
initWithCapacity
:
level
];
for
(
NSUInteger
i
=
0
;
i
<
level
;
i
++
)
{
[
tabString
appendString
:
@"
\t
"
];
}
NSString
*
tab
=
@""
;
if
(
level
>
0
)
{
tab
=
tabString
;
}
[
desc
appendString
:
@"{(
\n
"
];
for
(
id
obj
in
self
)
{
if
([
obj
isKindOfClass
:[
NSDictionary
class
]]
||
[
obj
isKindOfClass
:[
NSArray
class
]]
||
[
obj
isKindOfClass
:[
NSSet
class
]])
{
NSString
*
str
=
[((
NSDictionary
*
)
obj
)
descriptionWithLocale
:
locale
indent
:
level
+
1
];
[
desc
appendFormat
:
@"%@
\t
%@,
\n
"
,
tab
,
str
];
}
else
if
([
obj
isKindOfClass
:[
NSString
class
]])
{
[
desc
appendFormat
:
@"%@
\t\"
%@
\"
,
\n
"
,
tab
,
obj
];
}
else
if
([
obj
isKindOfClass
:[
NSData
class
]])
{
// 如果是NSData类型,尝试去解析结果,以打印出可阅读的数据
NSError
*
error
=
nil
;
NSObject
*
result
=
[
NSJSONSerialization
JSONObjectWithData
:
obj
options:
NSJSONReadingMutableContainers
error:
&
error
];
// 解析成功
if
(
error
==
nil
&&
result
!=
nil
)
{
if
([
result
isKindOfClass
:[
NSDictionary
class
]]
||
[
result
isKindOfClass
:[
NSArray
class
]]
||
[
result
isKindOfClass
:[
NSSet
class
]])
{
NSString
*
str
=
[((
NSDictionary
*
)
result
)
descriptionWithLocale
:
locale
indent
:
level
+
1
];
[
desc
appendFormat
:
@"%@
\t
%@,
\n
"
,
tab
,
str
];
}
else
if
([
obj
isKindOfClass
:[
NSString
class
]])
{
[
desc
appendFormat
:
@"%@
\t\"
%@
\"
,
\n
"
,
tab
,
result
];
}
}
else
{
@try
{
NSString
*
str
=
[[
NSString
alloc
]
initWithData
:
obj
encoding
:
NSUTF8StringEncoding
];
if
(
str
!=
nil
)
{
[
desc
appendFormat
:
@"%@
\t\"
%@
\"
,
\n
"
,
tab
,
str
];
}
else
{
[
desc
appendFormat
:
@"%@
\t
%@,
\n
"
,
tab
,
obj
];
}
}
@catch
(
NSException
*
exception
)
{
[
desc
appendFormat
:
@"%@
\t
%@,
\n
"
,
tab
,
obj
];
}
}
}
else
{
[
desc
appendFormat
:
@"%@
\t
%@,
\n
"
,
tab
,
obj
];
}
}
[
desc
appendFormat
:
@"%@)}"
,
tab
];
return
[
desc
stringByReplacingOccurrencesOfString
:
@",
\n
"
withString
:
@"
\n
"
options
:
NSBackwardsSearch
range
:
[
desc
rangeOfString
:
@",
\n
"
options
:
NSBackwardsSearch
]];
}
@end
#endif
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录