我正在使用一个简单的UITableViewController
import UIKit
import Alamofire
class TableViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate {
struct ListItem {
var Name:String = ""
var Number:String = ""
var Email:String = ""
}
override func viewDidLoad() {
super.viewDidLoad()
getjsonData()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Potentially incomplete method implementation.
// Return the number of sections.
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete method implementation.
// Return the number of rows in the section.
// return controlstaticdata.count
// return controlListData.controlListItems.count
return testdata.count
}
var testdata = [String]()
func getjsonData(){
var jsondata:NSData!
let url = "http://localhost:3000/controllistapp"
Alamofire.request(.GET, url).responseJSON(){
(_,_,data,_) in
println(data)
// parse the jsondata returned by Alamofire .GET request
let json = JSON(data!)
var i = 0
for(_, subJson): (String, JSON) in json {
if let Name = subJson["Name"].string,
let Number = subJson["Number"].string,
let Email = subJson["Email"].string{
var item = ListItem(Name: Name, Number: Number, Email: Email)
self.testdata += [Name]
}
}
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("controlcell", forIndexPath: indexPath) as! TableViewCell
// Configure the cell...
cell.clabel.text = self.testdata[indexPath.row]
return cell
}
}
testdata在函数外声明。 testdata也是从另一种方法填充的。
问题是:当我放置断点并检查数据时,self.testdata没有显示数据。 我在swift中正确使用变量吗?
在此处添加完整代码:
{{1}}
getjsonData中self.testdata + = [Name]行的断点显示正在填充的数据。 但是,tableView函数中的cell.clabel.text = self.testdata [indexPath.row]行的断点显示没有数据并引发异常。
答案 0 :(得分:0)
我认为您的问题是您在将数据填充到数组后忘记包含self.tableView.reloadData()