方法中实例变量的更改不反映原始实例变量的更改

时间:2019-02-10 06:40:37

标签: ios swift

我正在构建一个应用程序,在其中我将通过服务器获取数据。我正在为此目的使用Alamofire。我有一个名为handleRequest(json: JSON)的函数,该函数负责响应并将数据数组或json数据分配给实例变量。

// Instance Variable .   

var perm = JSON()

// Network

Alamofire.request(url, method: method , parameters: params ,encoding: URLEncoding.httpBody, headers: headers).responseJSON { response in

        switch(response.result){
        case .success(_):

            let result = JSON(response.result.value!)
            self.handleRequest(data: result)

            break

        case .failure(_):


            break
        }

    }    

// Request Handling

func handleRequest(data: JSON){

    perm = JSON(data["permissions"])
    print(perm)

}   

使用handleRequest(json: JSON)函数perm变量打印,一切都按预期进行,但使用其他函数则不然。

我期望实例变量var perm = JSON()应该反映其他函数中未发生的更改。

1 个答案:

答案 0 :(得分:0)

perm变量将始终始终显示相同的数据,即 如果您在调用self.handleRequest(data: result)之前访问烫发,则会得到 Empty json 这是因为此变量设置为闭包,并且一旦收到成功的API响应便将执行该变量。

printPerm()

Alamofire.request(url, method: method , parameters: params ,encoding: URLEncoding.httpBody, headers: headers).responseJSON { response in

        switch(response.result){
        case .success(_):
            let result = JSON(response.result.value!)
            self.handleRequest(data: result)
            break
        }

    }    

func handleRequest(data: JSON){

    perm = JSON(data["permissions"])
    print(perm) //API Json data

}

func printPerm() {
    print(perm) //Empty Json

}