ios - 从 Swift 中的闭包返回方法的值

标签 ios swift cocoa-touch

有没有一种方法可以让我从闭包中为 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
}

请注意,这仅在 getDataFromSomewheregetDataFromSomewhere 返回之前执行闭包时才有效。如果 getDataFromSomewhere 存储闭包,并安排稍后调用它(例如,在异步网络请求之后),那么这将不起作用。它只会让 shouldPerformSegueWithIdentifier:sender: 返回您用来初始化 returnValue 的值。

关于ios - 从 Swift 中的闭包返回方法的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738257/

相关文章:

ios - 开/关按钮逻辑 Sprite 套件

ios - 如何在 Firebase 中设置属性?

ios - 在 Spritekit 中创建暂停菜单

swift - 将 float 截断到小数点后两位的最简单方法?

objective-c - 使用 malloc 分配一个 NSStrings 数组?

iphone - 自定义 UICollectionViewCell 出错

ios - 如何以编程方式从已安装的应用程序获取方案?

ios - NSKeyedArchiver 自定义对象数组

ios - swift - UITableView 部分插入

iphone - 添加 NSInteger 对象到 NSMutableArray