我正在构建一个应用程序,我在其中通过服务器获取数据。我正在使用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
}