2017-08-30 42 views
0

JSONデータをこのテーブルビューコントローラに渡しました。 JSONデータから行数を設定する方法は? ..Swift 3で渡されたJSONデータの行数を設定します。

プリント(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;  
} 

答えて

0

"ジョブ"キーを使用して辞書の内容にアクセスする必要があります。あなたはpassedData辞書からのデータを使用したい場合は

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 
} 

、それはあなたがすべてのUITableViewDataSource機能で解析結果を使用することができますので、別の関数で解析を行うために意味をなさないと思います。この方法を使用すると、構文解析機能の最後にtableView.reloadData()を呼び出すことができます。

+0

すべての行にjobIDを表示する方法は? –

+0

@WanJern最新の回答を確認してください。それを使用すると、各セルのラベルにjobIDを表示することができます –

+0

ありがとう!私は新しい方法を試しました。 jobIDs.countが機能していないようです。どの行も表示されないので... –

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 
} 
関連する問題