两个函数在Swift中有一个变量

时间:2016-04-23 05:44:16

标签: xcode swift

我在视图控制器中有两个功能。第一个函数解析JSON并生成一个数组;另一个生成一个包含数组数据的表。问题是似乎第一个函数无法将其数组数据发送到第二个函数。

以下是代码: -

class secondViewController: UIViewController, UITableViewDataSource {
    let chartTitle:[String] = ["Name",......]

    func parseJSON(){
        let url = NSURL(string: "http://00000.us-west-2.elasticbeanstalk.com/index.php?000000")
        let request = NSURLRequest(URL: url!)
        do {
            let data = try NSURLConnection.sendSynchronousRequest(request, returningResponse: nil)
            do {
                let json = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers)
                var name = json["Name"]
                var chartContent:[String] = ["\(name)",.....]   //Contents of current chart contents
            } catch{
                //Handle Exception
            }
        } catch{
            //Handle Exception
        }
    }

    override func viewDidLoad() {
        parseJSON()
        ...
    }


    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {   //currnet table information.
        let cell = UITableViewCell()
        cell.textLabel?.text = chartTitle[indexPath.row] + "\t\t\t\t\t here comes info" + chartContent[indexPath.row]
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return chartTitle.count
    }
}

此代码在tableView函数中有错误:

  

使用未解析的标识符'chartContent'

我试图将变量声明在第secondViewController类正下方的第一个函数之外,但UITableViewDataSource上还有另一个错误。

这些解决方案?

2 个答案:

答案 0 :(得分:0)

Charttitle是在任何程序之外定义的,所以它随处可见。 Chartcontent是在一个块中定义的,所以它只在它的块中可用

答案 1 :(得分:0)

因为chartContent是一个只能用于parseJson func的局部变量,它的作用域直到那个func块。您必须创建此变量的方式与在整个班级中使用chartTitle的方式相同。