我正在尝试使用来自网络的数据设置一个非常简单的表格视图。我不明白为什么我的UITableView实例是零。这使我无法使用来自网络的数据重新加载表格数据。
如果我使用静态数据var songs: [String] = ["title1", "title2", "title3"]
而不是从网络中提取,那么一切正常。
我正在使用Xcode 6 Beta 6。
import UIKit
class SongsViewController: UITableViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var songsTableView : UITableView!
var songs: [AnyObject] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.getListOfSongs()
// self.songsTableView is nil here.
// self.songsTableView.dataSource = self
// self.songsTableView.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
return 1
}
override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return self.songs.count
}
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cell = UITableViewCell(style: .Subtitle, reuseIdentifier: nil)
cell.textLabel.text = self.songs[indexPath.row] as String
return cell
}
override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
println("You selected cell #\(indexPath.row)!")
}
func getListOfSongs () {
SonidoAPIClient.sharedInstance.getSongs(success: {(data: AnyObject) -> Void in
println("Got list of songs: \(data)")
self.songs = data["songs"] as [AnyObject]
self.songsTableView.reloadData() // self.songsTableView is nil here so error is thrown.
}, failure: {
println("Could not get song titles and ids!")
})
}
}