Swift:使用po在控制台格式化打印Dictionary、Array等对象
在Objective- C中进行控制台po相应对象时,可以直接格式化输出回显到控制台中,但在Swift中直接po对象,输出的格式都有,但对应实际开发来说其实并不友好,所以我们就需要能更直观的格式打印
示例数据:
{"stationIds":907,"deviationSource":2,"clientIds":"3,1","remark":"She","projectIds":"56,55","deviationType":"1","productLineIds":"1084","imgList":[{"id":29733},{"id":29734}],"securityFeature":"1"}
Swift默认情况下po输出:
(lldb) po dictionary ▿ 9 elements ▿ 0 : 2 elements - key : "stationIds" - value : 907 ▿ 1 : 2 elements - key : "deviationSource" - value : 2 ▿ 2 : 2 elements - key : "clientIds" - value : "3,1" ▿ 3 : 2 elements - key : "remark" - value : "She" ▿ 4 : 2 elements - key : "projectIds" - value : "56,55" ▿ 5 : 2 elements - key : "deviationType" - value : "1" ▿ 6 : 2 elements - key : "productLineIds" - value : "1084" ▿ 7 : 2 elements - key : "imgList" ▿ value : 2 elements ▿ 0 : 1 element ▿ 0 : 2 elements - key : "id" - value : 29733 ▿ 1 : 1 element ▿ 0 : 2 elements - key : "id" - value : 29734 ▿ 8 : 2 elements - key : "securityFeature" - value : "1"
而我们更需要直观展示的格式:
{ "stationIds" : 907, "deviationSource" : 2, "clientIds" : "3,1", "remark" : "She", "projectIds" : "56,55", "deviationType" : "1", "productLineIds" : "1084", "imgList" : [ { "id" : 29733 }, { "id" : 29734 }, ], "securityFeature" : "1" }
更加直观的显示1
将Dictionary或者Array等转换为AnyObject 进行显示,这个是最简单的
(lldb) po print(dictionary as AnyObject) 输出: { clientIds = "3,1"; deviationSource = 2; deviationType = 1; imgList = ( { id = 29733; }, { id = 29734; } ); productLineIds = 1084; projectIds = "56,55"; remark = She; securityFeature = 1; stationIds = 907; }
更加直观的显示2
将Dictionary或者Array等进行JSON序列化处置,以String形式展示
(lldb) po print(String(data: try! JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted), encoding: .utf8)!) 输出: { "stationIds" : 907, "deviationSource" : 2, "clientIds" : "3,1", "remark" : "She", "projectIds" : "56,55", "deviationType" : "1", "productLineIds" : "1084", "imgList" : [ { "id" : 29733 }, { "id" : 29734 } ], "securityFeature" : "1" }
文章评论