在Swift中锡垄,通過assert實現(xiàn)斷言静稻,assert可以幫助開發(fā)者比較容易的發(fā)現(xiàn)和定位錯誤
一個斷言斷定條件是true.通過聲明一個斷言來確保某個必要的條件是滿足的睹耐,以便繼續(xù)執(zhí)行接下來的代碼糊探。如果條件滿足了挎狸,那么代碼像往常一樣執(zhí)行扣汪,如果不滿足了,代碼就停止執(zhí)行了锨匆,應(yīng)用也隨之停下來了崭别。
但是系統(tǒng)assert不一定適合我們現(xiàn)有的項目場景,因此做了一個自定義的assert恐锣。
swift創(chuàng)建File
import Foundation
import UIKit
#if DEBUG
func SLShowAssertAlert(_ message: String?) {
DispatchQueue.main.async(execute: {
let alert = UIAlertController(title: "Assert Triggered", message: message, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "Kill the bug!", style: .cancel, handler: nil)
alert.addAction(cancelAction)
UIApplication.shared.keyWindow?.rootViewController?.present(alert, animated: true)
})
}
func SLAssert(_ condition: Bool,
file: StaticString = #file,
line: UInt = #line,
function:StaticString = #function) {
if condition {
SLShowAssertAlert("location:\(file) \n line:\(line) \n function:\(function)")
}
}
func SLAssertInfo(_ condition: Bool,
info: Any,
file: StaticString = #file,
line: UInt = #line,
function:StaticString = #function) {
if (condition) {
SLShowAssertAlert("location:\(file) \n line:\(line) \n function:\(function),\n info:\(info)")
}
}
#else
func SLAssert(_ condition: Bool) {
}
func SLAssertInfo(_ condition: Bool, _ info: Any) {
}
#endif
使用
SLAssert(true)