第三十七章 Swfit 调试

Swfit 调试和OC略有不同,例如打印,你会看到一个非常复杂的打印日志。

let dic = ["fruit": ["apple","banana"], "char" : "s", "c" : UIView()] as [String : Any] // 此处添加断点

// 使用`po`打印
/*
▿ 3 elements
  ▿ 0 : 2 elements
    - key : "char"
    - value : "s"
  ▿ 1 : 2 elements
    - key : "fruit"
    ▿ value : 2 elements
      - 0 : "apple"
      - 1 : "banana"
  ▿ 2 : 2 elements
    - key : "c"
    - value : >

*/

打印日志中,每个键都会有一个索引与之对应,会像多级列表一样依次排列。相比之下,OC要更简洁,Swift更直观。

Swift调试中的dic

我们可以在这里看到每个元素的类型,但是AnyAnyObject却不能看到,而OC却可以。

1. 全局断点

和OC不同的是Swift额外多了一个Swift Error Breakpoint断点, 它会在throw时触发。

Swift Error Breakpoint

2. 代码检查

由于Swift提供了gurad语法,很多时候在数据转换时我们都会利用它来进行更安全的'强制解包'(同样获取数据或转换类型却不会crash),如下:

let a: Any = 1
guard let b = a as? Int else { return }
print(b) // 1

如果事情并非我们预期那样,则可能条件不符而return结束,导致逻辑错误。

let a: Any = 1
guard let b = a as? String else { return }
print(b)

此时便什么都不会发生,a不是字符串,故条件不满足直接返回。

你可能感兴趣的:(第三十七章 Swfit 调试)