首页 文章

TableView不显示带有来自API调用的JSON数据的文本

提问于
浏览
4

我使用 AlamofireSwiftyJson 连接到API .

我得到了这个JSON返回:


{
"contacts": [
{
"id": "c200",
"name": "Ravi Tamada",
"email": "ravi@gmail.com",
"address": "xx-xx-xxxx,x - street, x - country",
"gender" : "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
},
{
"id": "c201",
"name": "Johnny Depp",
"email": "johnny_depp@gmail.com",
"address": "xx-xx-xxxx,x - street, x - country",
"gender" : "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
},
{
"id": "c202",
"name": "Leonardo Dicaprio",
"email": "leonardo_dicaprio@gmail.com",
"address": "xx-xx-xxxx,x - street, x - country",
"gender" : "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
}
]
}


这是我的ViewController代码:

import UIKit
import Alamofire
import SwiftyJSON

class ViewController:UIViewController {
    @IBOutlet weak var tblJSON: UITableView!

    var arrRes = [[String : AnyObject]]()

    override func viewDidLoad() {
        super.viewDidLoad()
        getRequest()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func getRequest() {
        Alamofire.request("http://api.androidhive.info/contacts").responseJSON { (responseData) -> Void in
            if ((responseData.result.value) != nil) {
                let swiftyJsonVar = JSON(responseData.result.value!)

                if  let resData = swiftyJsonVar["contacts"].arrayObject {
                    self.arrRes = resData as! [[String : AnyObject]]
                }

                if self.arrRes.count > 0 {
                    self.tblJSON.reloadData()
                }
            }
        }
    }

    //MARK: tableView
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return arrRes.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell")!
        var dict = arrRes[indexPath.row]
        cell.textLabel?.text = dict["name"] as? String
        cell.detailTextLabel?.text = dict["email"] as? String
        return cell
    }

}

我在 UITableView 上显示结果时遇到问题 . 谁能帮我?谢谢!

1 回答

  • 6

    你需要像这样实现 UITableViewDataSourceUITableViewDelegate

    class ViewController:UIViewController, UITableViewDataSource, UITableViewDelegate
    

    并且在 viewDidLoad 中你需要像这样为你的tableView分配 DataSourceDelegate

    override func viewDidLoad() {
        super.viewDidLoad()
        tblJSON.dataSource = self
        tblJSON.delegate = self
        getRequest()
    }
    

相关问题