Swift Closure完成处理程序

时间:2018-02-23 16:36:52

标签: swift closures completionhandler completion

我现在有一个函数来确定UILabel的隐藏行为:func shouldHideLabel() -> Bool

我需要从网络请求中检索数据,以确定是否隐藏此标签,因此在shouldHideLabel()内部我正在调用函数func webRequestDataIsValid() -> Bool

webRequestDataIsValid()正在执行带有闭包的Web请求,返回一个对象,并且该对象上有一个变量isValid,它返回true或false。

我的目标是等待这个isValid标志返回给我,从webRequestDataIsValid返回true或false,然后使用该返回值从原始shouldHideLabel返回功能

我在shouldHideLabel内部使用完成处理程序来等待来自webRequestDataIsValid的数据,但我不确定如何在shouldHideLabel内部等待返回为了我的关闭完成。看起来你无法在闭包内部从函数返回。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您的网络请求将包含completionBlock, 试试这个:

func webRequestDataIsValid(completion: @escaping ((Bool) ->Void)) {
    whateverYourRequestMethod.response { httpResponse in
        let isValid = true // retrieve your boolean
        completion(isValid)
    )
}