有没有一种方法可以让我从闭包中为 shouldPerformSegueWithIdentifier
方法返回值?或者我应该采取不同的方式吗?
override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
getDataFromSomewhere() { succeeded, data in
if succeeded {
// Should return true here
} else {
self.errorAlert("Error", message: "Can't get data...")
// Should return false here
}
}
}
最佳答案
你不能让 shouldPerformSegueWithIdentifier:sender:
从你放置 //Should return true here
的地方返回。你需要做这样的事情:
override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
var returnValue: Bool = false
getDataFromSomewhere() { succeeded, data in
if succeeded {
returnValue = true
} else {
self.errorAlert("Error", message: "Can't get data...")
returnValue = false
}
}
return returnValue
}
请注意,这仅在 getDataFromSomewhere
在 getDataFromSomewhere
返回之前执行闭包时才有效。如果 getDataFromSomewhere
存储闭包,并安排稍后调用它(例如,在异步网络请求之后),那么这将不起作用。它只会让 shouldPerformSegueWithIdentifier:sender:
返回您用来初始化 returnValue
的值。
关于ios - 从 Swift 中的闭包返回方法的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738257/