要解决布尔值返回nil并且无法从视图控制器中访问响应的值的问题,可以通过使用闭包或代理来传递值。
示例代码:
class ViewController: UIViewController {
var completion: ((Bool) -> Void)?
func fetchData() {
// 模拟异步操作
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
let result = true // 这里模拟布尔值的返回结果
self.completion?(result)
}
}
override func viewDidLoad() {
super.viewDidLoad()
fetchData()
// 调用闭包并处理返回的值
completion = { result in
if result {
print("布尔值为真")
} else {
print("布尔值为假")
}
}
}
}
示例代码:
protocol DataDelegate: AnyObject {
func didReceiveData(result: Bool)
}
class ViewController: UIViewController {
weak var delegate: DataDelegate?
func fetchData() {
// 模拟异步操作
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
let result = true // 这里模拟布尔值的返回结果
self.delegate?.didReceiveData(result: result)
}
}
override func viewDidLoad() {
super.viewDidLoad()
fetchData()
}
}
extension ViewController: DataDelegate {
func didReceiveData(result: Bool) {
if result {
print("布尔值为真")
} else {
print("布尔值为假")
}
}
}
通过使用闭包或代理,可以将布尔值的返回结果传递给视图控制器,以便在需要的地方进行处理。