我有一个类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()函数时它确实只对我有用,不知道为什么希望其中一位专家可以在以后解释它。
享受!
答案 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")
}