Swift 使用闭包回调 (类似于OC的block)
swift
class DataManager {
var update: (() -> Void)?
func updateData() {
// 从网络获取数据并更新...
update?() // 如果有回调,则调用它
}
}
B控制器调用使用
let dataManager = DataManager()
// 设置回调
dataManager.update = {
print("Data updated!")
}
// 更新并调用回调
dataManager.updateData()
// 打印"Data updated!"
// 没有回调
let dataManager2 = DataManager()
dataManager2.updateData() // 不打印任何内容
update闭包接收参数
var update: ((ParamType) -> Void)?
然后可以这样设置和调用闭包:
update = { (str) in print("Update called with \(str)")}
使用如下
swift
class DataManager {
var update: ((String) -> Void)?
func updateData(to value: String) {
// 使用value从网络更新数据...
update?(value)
}
}
let dataManager = DataManager()
dataManager.update = { (newValue) in
print("Data updated to \(newValue)!")
}
使用guard语句来确保从field中获取的text值不为空。如果text为空,则guard语句的else块会执行,方法会返回