簡體   English   中英

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

[英]How to use variables outside ViewDidLoad( ) - Swift

如果我已經使用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可用,更具體地說,在downloadTaskWithURL塊中可用。 您可以在類的頂部創建一個屬性來保存hourlyInfo,但是hourlyInfo僅在塊完成時設置。 此外,由於您將使用屬性並在塊內引用self.hourlyInfo,因此您應按如下所述創建一個弱的self變量: 如何正確處理帶有參數的Swift塊中的弱自我

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM