代码之家  ›  专栏  ›  技术社区  ›  K. Mitra

未从web服务获取UITableView中的数据

  •  1
  • K. Mitra  · 技术社区  · 7 年前

    我对swift处理请求和响应相当陌生。。这就是我一直坚持的代码。我从dataArray中的webservice获取值,但不在tableview中加载。请有人帮忙。

    import UIKit
    import Foundation
    import Alamofire
    import SwiftyJSON
    
    class AddOnsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    
        @IBOutlet weak var tableView: UITableView!
    
        var dataArray = [AnyObject]()
        var addOnsURL = "http://econstrademosite.com/food_delivery/?****************"
    
        override func viewDidLoad() {
            super.viewDidLoad()
            self.automaticallyAdjustsScrollViewInsets = false
            self.tableView.reloadData()
            callData()
        }
    
        @IBAction func goBackToHome(sender: UIBarButtonItem){
    
            let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "base") as! SWRevealViewController
            self.present(vc, animated: true, completion: nil)
        }
    
        func callData(){
    
            Alamofire.request(addOnsURL).responseJSON { response in
    
                let result = response.result
                if let dict = result.value as? Dictionary<String, AnyObject>{
                    if let innerDict = dict["data"]?["result"]{
                        self.dataArray = innerDict as! [AnyObject]
                        print(self.dataArray)
                    }
                }
            }
        }
    
        func numberOfSections(in tableView: UITableView) -> Int {
            return 1
        }
    
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            print(dataArray.count)
            return dataArray.count
        }
    
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! exampleTableViewCell
            let itemName = dataArray[indexPath.row]["item_name"]
            cell.label.text! = itemName as! String
    
            return cell
        }
    
    }
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   Divyesh Gondaliya    7 年前
        func callData(){
    
            Alamofire.request(addOnsURL).responseJSON { response in
    
                let result = response.result
                if let dict = result.value as? Dictionary<String, AnyObject>{
                    if let innerDict = dict["data"]?["result"]{
                        self.dataArray = innerDict as! [AnyObject]
                        print(self.dataArray)
                     if self.dataArray.count > 0
                      {
                        self.tableView.reloadData()
                      }
                    }
                }
            }
        }
    
        2
  •  1
  •   Robert    7 年前

    delegate dataSource 为了您的 tableView

    override func viewDidLoad() {
            super.viewDidLoad()
            self.automaticallyAdjustsScrollViewInsets = false
            self.tableView.delegate = self
            self.tableView.dataSource = self
            callData()
        }
    

    func callData(){
    
        Alamofire.request(addOnsURL).responseJSON { response in
    
            let result = response.result
            if let dict = result.value as? Dictionary<String, AnyObject>{
                if let innerDict = dict["data"]?["result"]{
                    self.dataArray = innerDict as! [AnyObject]
                    print(self.dataArray)
                    self.tableView.reloadData() // you missing this method
                }
            }
        }
    }
    
        3
  •  0
  •   Aditya Srivastava Bishow Gurung    7 年前

    dataArray ,您可以重新加载表。

    数据阵列

    所以请更改 callData() 像这样的方法

    func callData(){
    
        Alamofire.request(addOnsURL).responseJSON { response in
    
            let result = response.result
            if let dict = result.value as? Dictionary<String, AnyObject>{
                if let innerDict = dict["data"]?["result"]{
                    self.dataArray = innerDict as! [AnyObject]
                    print(self.dataArray)
                }
            }
        }
    }