2017-04-25 62 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

謝謝,但仍然返回零 –