I am pretty new to Swift.
(a) I have been able to use table view to load numbers from an array into a table.
(b) I have been able to read a text file from the web and load it into an array.
However, I want the array in (b), which is created from the web text file, to be viewed in (a), which is the table view.
There seems no communication between section (a) and (b) in my code.
Could you please help?
//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
}