2017-04-25 63 views
1

此代码的目的是将封闭变量存储在全局变量中,使用此代码我想将jsonResponse.data存储到aa,但每次都在关闭之外aa是零,它似乎是逻辑,但是有没有办法在关闭之外持久化这个变量?从封闭变量中存储数据

感谢您的帮助

我的代码

import UIKit 
import Alamofire 

class ViewController: UIViewController { 

    var myJson:NSDictionary? 
    var aa:Any? 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     let url="https://mastodon.cloud/api/v1/apps" 

     Alamofire.request(url, method: .post, parameters: ["client_name": "Coucou", "redirect_uris": "urn:ietf:wg:oauth:2.0:oob", "scopes": "read"]).responseJSON { (jsonResponse) in 
      if jsonResponse.error != nil{ 
       print("error \(jsonResponse.error.debugDescription)") 
       return 
      } 
      print(jsonResponse.data!) 
      self.aa=jsonResponse.data! 
     } 
     print(aa) // return nil !!! 
    } 
} 

回答

1

你是在正确的轨道上,但你的代码执行顺序错误。 “打印”在关闭之前执行,所以“无”是正确的。

如果在关闭完成后调用“print(aa)”,则设置正确。

print(jsonResponse.data!) 
    self.aa=jsonResponse.data! 
    print(self.aa) // should work 
} 
+0

他号召结束后打印(AA)仅 –

+1

的Alamofire.request闭包是一个异步调用..所以它的打印@SanketBhavsar – OliverM

+0

我知道,但ID为”想储存从封闭到我的反应后执行一个类变量,有可能吗? –

-1

看起来好像你没有初始化你的self.aa.尝试下面,它会起作用。

self.aa = NSData(data: jsonResponse.data); 
+0

NSData没有成员dataWithData? –

+1

使用Init方法。 NSData(data:yourdata) – Darshana

+0

谢谢,但仍然返回零 –