我正在构建一个应用程序,在其中我将通过服务器获取数据。我正在为此目的使用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()
应该反映其他函数中未发生的更改。
答案 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
}