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

  • 本文关键字:变量 实例 原始 方法 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()应该反映其他函数中没有发生的变化。

perm 变量将始终显示相同的数据,即如果您在调用 self.handleRequest(data: result) perm 之前访问 perm,您将获得空 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
}

最新更新