将闭包的值赋给变量 Swift

Assign Value from Closure to Variable Swift

我正在尝试将从闭包返回的值分配给我在闭包范围之外分配的变量。

我想这样做,这样我就可以在我的闭包之外使用这个 var 来保持整洁,而不是将所有这些嵌套代码都放在这个闭包中。

我正在使用 Alamofire 处理请求并使用 swify-json 来帮助解析 json。

我得到以下信息:

Error: variable 'userId' captured by a closure before being initialized

这是调用闭包函数的代码:

var userId: Int

get()
{
    data in
    userId = data["used_id"].intValue
}

这是我对 get() 函数的实现:

func get(param: [String: AnyObject] = [String: AnyObject](), completion: (JSON) -> ())
{
    Alamofire.request(.GET, "apiendpoint.com", parameters: param)
    .responseJSON
    {
        response in
            switch response.result
            {
                case .Success:
                    let jsonData = JSON(data: response.data!)
                    completion(jsonData)
                case .Failure(let error):
                    print("Request failed with error: \(error)")
            }
    }
}

感谢您的所有帮助!

var userId: Int更改为var userId: Int!

原因是当您 "capture it" 时闭包期望变量中有一个值。通过使用强制展开的变量,闭包将能够捕获它,因为它的值为 nil,然后您可以在调用闭包时为其赋值。