繁体   English   中英

将值从闭包分配给变量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!

原因是当您“捕获”闭包时,它期望值包含在变量中。 通过使用强制展开的变量,闭包将可以捕获它,因为它拥有一个nil值,然后您可以在调用闭包时为其分配一个值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM