Arrays Swift中的访问数组外部函数

Arrays Swift中的访问数组外部函数,arrays,swift,tableview,Arrays,Swift,Tableview,我对斯威夫特很陌生 (a) 我已经能够使用表视图将数字从数组加载到表中 (b) 我已经能够从web读取文本文件并将其加载到数组中 但是,我希望(b)中的数组(从web文本文件创建)在(a)中查看,这是表视图 我的代码中(a)和(b)部分之间似乎没有通信 你能帮忙吗 //MAIN CLASS import UIKit //CHUNK 0 class ViewController: UITableViewController { var candies = [Candy]() //CHUN

我对斯威夫特很陌生

(a) 我已经能够使用表视图将数字从数组加载到表中

(b) 我已经能够从web读取文本文件并将其加载到数组中

但是,我希望(b)中的数组(从web文本文件创建)在(a)中查看,这是表视图

我的代码中(a)和(b)部分之间似乎没有通信

你能帮忙吗

//MAIN CLASS

import UIKit

//CHUNK 0
class ViewController: UITableViewController {

var candies = [Candy]()


//CHUNK 1
override func viewDidLoad() {

super.viewDidLoad()

// CHUNK 1.2
let request = NSMutableURLRequest(URL: NSURL(string: "http://www.saifahmad.com/A.txt")!)
httpGet(request){
            (data, error) -> Void in
            if error != nil {
                print(error)
            } else {
                //print(data)//PRINTING ALL DATA TO CONSOLE
                let delimiter = "\t" // Read a tab-delimited text file

                // self.items = []
                let lines:[String] =    data.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet()) as [String]

                var ar = [Double]()

                for line in lines {
                    var values:[String] = []
                    if line != "" {
                        values = line.componentsSeparatedByString(delimiter)
                        // Put the values into the tuple and add it to the items array
                        let str = (values[1])//CHOOSE THE COLUMN TO PRINT (0, 1, 2)
                        // Convert string to double
                        let db = NSNumberFormatter().numberFromString(str)?.doubleValue
                        ar.append(db!)
                    }
                }
                dump(ar) // THIS ARRAY 'AR' PRINTS OK HERE BUT CANNOT BE ACCESSED IN CHUNK 1.3
            }
    }
    // CHUNK 1.2


    //CHUNK 1.3
   // CANNOT ACCESS ARRAY 'AR' OF CHUNK 1.2 HERE
    let ar2: [Double] = [0, 0.004, 0.008, 0.012, 0.016, 0.02, 0.024, 0.028, 0.032, 0.036, 0.04]
    for nn in ar2 {
        self.candies.append(Candy(name: String(format:"%.4f", nn)))
    }
    //CHUNK 1.3


}
//CHUNK 1


//CHUNK 2
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
//CHUNK 2


//CHUNK 3
 override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.candies.count
}
//CHUNK 3


//CHUNK 4
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
    var candy : Candy
    candy = candies[indexPath.row]
    cell.textLabel?.text = candy.name
    return cell
}
//CHUNK 4


//CHUNK 5
func httpGet(request: NSURLRequest!, callback: (String, String?) -> Void) {
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithRequest(request){
        (data, response, error) -> Void in
        if error != nil {
            callback("", error!.localizedDescription)
        } else {
            let result = NSString(data: data!, encoding:
                NSASCIIStringEncoding)!
            callback(result as String, nil)
        }
    }
    task.resume()
}
//CHUNK 5


}
//CHUNK 0



//CANDY CLASS
import Foundation

struct Candy {
let name : String
    }


因此,您的问题是在请求的闭包中声明数组ar。所以它只存在于闭包中。您有两个选项:在viewDidLoad之外创建一个数组,并在获得完整数组后进行设置,然后使用didSet设置糖果,或者您可以在闭包内完成糖果的所有设置(请参见下文)。无论如何,我都会放一套糖果来重新加载你的tableView

var candies = [Candy]() {
    didSet {
        tableView.reloadData()
    }
}

override func viewDidLoad() {

    super.viewDidLoad()

    // CHUNK 1.2
    let request = NSMutableURLRequest(URL: NSURL(string: "http://www.saifahmad.com/A.txt")!)

    httpGet(request){ (data, error) -> Void in

        if error != nil {

            print(error)

        } else {

            let delimiter = "\t" // Read a tab-delimited text file

            let lines:[String] =    data.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet()) as [String]

            var ar = [Double]()

            for line in lines {

                var values:[String] = []

                if line != "" {

                    values = line.componentsSeparatedByString(delimiter)
                    // Put the values into the tuple and add it to the items array

                    let str = (values[1])//CHOOSE THE COLUMN TO PRINT (0, 1, 2)

                    // Convert string to double

                    let db = NSNumberFormatter().numberFromString(str)?.doubleValue

                    ar.append(db!)

                }

            }


            for nn in ar {

                self.candies.append(Candy(name: String(format:"%.4f", nn)))

            }

        }

    }

}

非常感谢你,奥利弗!没问题:)如果有效,请将其标记为正确答案,以便下一个人查看。