Ios 如何在ViewDidLoad()之外使用变量-Swift

Ios 如何在ViewDidLoad()之外使用变量-Swift,ios,swift,Ios,Swift,如果我用ViewDidLoad()声明了一个变量。有没有办法访问ViewDidLoad()之外的变量 我已经从API检索并存储了JSON数据。我可以在ViewDidLoad()中访问变量'hourlyInfo',但不能在其外部访问。我应该使用全局变量吗?还是我一开始就错误地处理了这个问题 eoverride func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the v

如果我用
ViewDidLoad()
声明了一个变量。有没有办法访问
ViewDidLoad()
之外的变量

我已经从API检索并存储了JSON数据。我可以在
ViewDidLoad()
中访问变量'hourlyInfo',但不能在其外部访问。我应该使用全局变量吗?还是我一开始就错误地处理了这个问题

eoverride func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    //getting the data from URL:
    let mainAddress = NSURL(string: "https:.......") 


    //Now, getting the data syncronously by creating a session object::
    let sharedSession = NSURLSession.sharedSession()
    let downloadTask: NSURLSessionDownloadTask =
    sharedSession.downloadTaskWithURL(mainAddress!, completionHandler: {
        (location:NSURL!, response:NSURLResponse!, error: NSError!) -> Void in

        if error == nil {
            //Now, creating a dataObject for the task:
            let dataObject = NSData(contentsOfURL: location)


            //getting a formated dictionary of the data from URL:
            var weatherDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(dataObject!, options: nil, error: nil) as NSDictionary //added '!' to NSdata for now





   var hourlyInfo = hourlyData(weatherDictionary: weatherDictionary) 

   println(hourlyInfo.hourPop1)//testing                         


        }



    })

    downloadTask.resume()

由于您正在
viewDidLoad
中创建hourlyInfo,因此它仅在
viewDidLoad
中可用,更具体地说,它在
downloadstaskwithurl
块中可用。您可以在类的顶部创建一个属性来保存hourlyInfo,但hourlyInfo将仅在块完成时设置。此外,由于您将使用一个属性并在块内引用self.hourlyInfo,因此您应该创建一个弱自变量,如下所述:。

还需要有一个标志,指示数据是否可用。谢谢大家,我将尝试一下。