以下代码正常运行,但"对于"块不起作用 所以" TableView"没有添加到数据中。
我该如何解决这个问题?
class ViewController: UITableViewController {
var NumberOfRows = 0
var BaslikArray = [String]()
var GonderenArray = [String]()
override func viewDidLoad() {
super.viewDidLoad()
parseJSON()
}
func parseJSON(){
let myUrl = NSURL(string: "http://10.10.5.1/mjson.php");
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "POST";
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
let postString = "istek=pmliste&eposta=abc@abc.com&sifre=70c5fb2837e3edf992674a06fc876920&salt=sMb&tt=1";
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil
{
print("error=\(error)")
return
}
let readableJSON = JSON(data: data!, options: NSJSONReadingOptions.MutableContainers, error: nil)
self.NumberOfRows = readableJSON["pm"].count
for var i = 0; i < self.NumberOfRows; i++ {
let aa = readableJSON["pm"][i]["baslik"].string!
self.BaslikArray.append(aa)
NSLog("\(readableJSON["pm"][i]["baslik"].string!)")
}
}
task.resume()
}
override func tableView(tableView: UITableView, numberOfRowsInSection sesction: Int) -> Int {
return NumberOfRows
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell" , forIndexPath: indexPath) as UITableViewCell
if BaslikArray.count != 0 {
cell.textLabel?.text = BaslikArray[indexPath.row]
}
return cell
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
答案 0 :(得分:0)
数据加载完成后,您必须在表视图上调用reloadData
。 I.E.,for循环结束后。
为了使代码更好,您可以做的另一件事是删除NumberOfRows
属性。只需在需要知道行数的地方使用BaslikArray.count
即可。