Swift中的断言与ObjectiveC中的断言有很多不一样的地方,使用起来差不多。
什么是断言?
断言通常是用于诊断条件是否满足,如果不能满足就会中断程序。使用assert函数来添加断言。
如果条件为真,那么就什么也不做,可以继续往下走。如果条件为假,那么就会抛出crash信息,程序中断退出。
var valueId = ""
// 这里会crash,因为条件为假
// 崩溃信息为:assertion failed: : file <EXPR>, line 86
assert(valueId.isEmpty == false)
assert函数的方法为:
public func assert(@autoclosure condition: () -> Bool, @autoclosure _ message: () -> String = default, file: StaticString = default, line: UInt = default)
对于此方法,我们有很多个缺省值的参数,因此我们也可以传我们自定义的参数。
// assertion failed: optoinalValue2不为空: file <EXPR>, line 89
assert(optoinalValue2.isEmpty == true, "optoinalValue2不为空")
Swift还提供了直接断言失败的API:
// fatal error: : file <EXPR>, line 92
assertionFailure()
当前这个断言失败的API也可以传参数,指定错误信息。指定特定的错误信息,目的是让我们开发人员更精准地定位到出错的问题所在。
// fatal error: 反正是失败了: file <EXPR>, line 96
assertionFailure("反正是失败了")