在Swift中,如何更改函数中的变量?

时间:2015-09-26 15:40:21

标签: swift function swift2

我想在viewDidLoad中访问stringEncoded,但我不能。我如何访问它。是因为它不在主队列中,还是与全局变量人员有关?

我尝试使用新代码,但它仍然没有工作......

// Editted。

2 个答案:

答案 0 :(得分:0)

根据您提供的代码,var stringEncoded已定义到您的jsonGetir功能,而您想从viewDidLoad

访问它

因此,解决方案是将此变量放在类级别中,如下所示:

class YourClass{
    var stringEncoded = "asomthing" //change the value or the type to whatever suites u

    viewDidLoad{}
    func jsonGetir(){}

}

更新

正如您所要求的,一个完整的工作示例:

import UIKit


class StViewController: UIViewController {

    var stringEncoded = [String]()



    func jsonGetir() {

        let urls = NSURL(string: "http://gigayt.com/mackolik/deneme.php")

        let sessions = NSURLSession.sharedSession().dataTaskWithURL(urls!){

            data, response, error -> Void in

            if (error != nil){
                print(error)
            }

            do {
                if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
                    let x = jsonResult["kodlar"] as! String


                    self.stringEncoded = x.componentsSeparatedByString(",")


                }
            }

            catch {
                print(error)
            }


            dispatch_async(dispatch_get_main_queue()){

            }
        }

        sessions.resume()

    }

    override func viewDidLoad() {
        super.viewDidLoad()
        for i in 0..<self.stringEncoded.count {
            print(self.stringEncoded[i])
        }
    }

}

答案 1 :(得分:0)

首先在类范围中声明变量。如果您想要保留该参数,则可以使用 inout 参数。请参阅了解有关 inout 参数的更多信息,希望您理解