iOS Swift将JSON数据导入tableView

时间:2015-08-07 07:46:40

标签: ios json swift

我有一个JSON数据,我想进入UITable。数据是动态的,因此每次加载视图时表都应更新。有人可以帮忙吗?

{
data =     (
                {
            id = 102076330;
            name = "Vicky Arora";
        }
    )
}

3 个答案:

答案 0 :(得分:1)

试试这个......

当您收到回复时,请获取整个字典数组

if let arr = response["data"] as? [[String:String]] {
      YourArray = arr  
      // Define YourArray globally
}  

然后在tableview单元格中,cellForRowAtIndexPath方法

if let name = YourArray[indexpath.row]["name"] as? String{
      label.text = name
}
//Same You can done with id 

不要忘记设置行数

 override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete method implementation.
    // Return the number of rows in the section.
    return YourArray.count
}

答案 1 :(得分:1)

试试这个。但是这个样本我使用的是Alamofire和SwitfyJSON。使用CocoaPod导入它。

import UIKit
import Alamofire

class TableViewController: UITableViewController{

    var users: [JSON] = []

    override func viewDidLoad() {
        super.viewDidLoad()

        Alamofire.request(.GET, "http://xxxxx/users.json").responseJSON { (request, response, json, error) in
            if json != nil {
                var jsonObj = JSON(json!)
                if let data = jsonObj["data"].arrayValue as [JSON]?{
                    self.users = data
                    self.tableView.reloadData()
                }
            }
        }
    }

    // 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 users.count
    }

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

        let cell = tableView.dequeueReusableCellWithIdentifier("UserCell", forIndexPath: indexPath) as! UITableViewCell
        let user = users[indexPath.row]
        if let idLabel = cell.viewWithTag(100) as? UILabel {
            if let id = user["id"].string{
                idLabel.text = id
            }
        }

        if let nameLabel = cell.viewWithTag(101) as? UILabel {
            if let name = user["name"].string{
                nameLabel.text = name
            }
        }

        return cell
    }

}

答案 2 :(得分:0)

如果您要使用Core Data,我建议您使用NSFetchedRequest

每次从服务器获取数据时,将其保存到Core数据,这将自动更新表视图。

以下是Ray Wenderlich

的教程