swift 2如何在函数外使用变量?

时间:2016-03-08 09:31:54

标签: ios swift swift2

我有一个类ApiManager(),它向JSON数据发出请求,我从这里学习了tutorial,它使用协议委托方法将数据传递给ViewController类

数据获得正常,但我不知道如何使用它?!在这种情况下,我试图在TableView

中使用它
ClassMap

我有点困惑如何解决这个问题,我试图将返回值设为didReieveResponse(),但问题是当我调用函数时它需要参数(在Delegator类中传递给它的字典) “)..我完全糊涂了。

以下是委托人类和协议供参考:

public function datatable(){
        $data = $this->log_send_model->getListDetailled($conditions,array('from'=>$this->uri->segment(4)),array('orderBy'=>array('id_log_send'=>'desc')));
        $arrayMess = array();
           // Other array for columns

           foreach ($data as $value) {
              # code...
              array_push($arrayMess, $value->message);
              //var_dump($arrayMess);

        }
      echo json_encode($arrayMess);
}

}

感谢,

更新

对于可能像我一样受苦的未来开发人员,解决方案是使用如下所述的TableViewName.reloadData()。 但请注意,当我在ViewDidLoad之外放置DidRecieveResponse()函数时它确实只对我有用,不知道为什么希望其中一位专家可以在以后解释它。

享受!

1 个答案:

答案 0 :(得分:2)

喜欢

 class ViewController: UITableViewController, ApiManagerDelegate{

var names:[String] = []  
 let manager = ApiManager()


 override func viewDidLoad() {
    super.viewDidLoad()

    manager.delegate = self
    manager.getRestaurantsData()
 }

   func didReceiveResponse (info: [String : AnyObject]){

        //Read name property from data dictionary (JSON)

        if let restaurantsData = info["restaurants"] as? [[String: AnyObject]]{

            for restaurant in restaurantsData{
                let name = restaurant["name"] as? String
                self.names.append(name!)
            }

                print("Data1: \(names)") // prints the data perfectly
             if (self.names.count>0)
             { 
              yourtableview.reloadData()
             }
        }

    }


  func didFailToReceiveResponse() {
    print("There was an error in recieving API data")
}