设置Swift 3中传递的JSON数据的行数

时间:2017-08-30 10:58:40

标签: swift uitableview

我将JSON数据传递给此表视图控制器。如何设置JSON数据的行数?如何定义..

print(passedData),输出:

["jobs": <__NSArrayM 0x17005d9d0>({
jobDate = "2017-08-31";
jobEndTime = 1504144800;
jobID = 87;
jobTime = 1504137600;}), 
"result": success, "message": Retrieve Sucessfully]

我的代码

var passedData: [String: Any]!

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    //jobs.count
    return 0
}

func tableView(tableView: UITableView, cellForRowAtIndexPath  indexPath: NSIndexPath) -> UITableViewCell {

 let row : UITableViewCell = UITableViewCell();
 //Add every Row
 return row;       
 }

2 个答案:

答案 0 :(得分:0)

也许这会有所帮助!

var passedData: [String: Any]!

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//jobs.count
    if let jobs = passedData["jobs"] as? [[String:Any]] {
         return jobs.count
    }
    return 0
}

答案 1 :(得分:0)

您需要使用“作业”键访问词典中的内容。

var jobIDs = [Int]()

override func viewDidLoad(){
    super.viewDidLoad()
    guard let jobs = passedData["jobs"] as? [[String:Any]] else {return }
    for job in jobs {
        if let idString = job["jobID"] as? String, let id = Int(idString) {
            jobIDs.append(id)
        }
    }
    tableView.reloadData()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return jobIDs.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath  indexPath: NSIndexPath) -> UITableViewCell {

     let cell = UITableViewCell()
     cell.textLabel.text = "\(jobIDs[indexPath.row])"
     return cell
 }

如果要使用passedData字典中的数据,在单独的函数中进行解析是有意义的,这样您就可以在所有UITableViewDataSource函数中使用已解析的结果。使用此方法,您可能希望在解析函数结束时调用tableView.reloadData()