Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用Alamofire更改全局变量?_Ios_Swift_Uitableview_Closures_Alamofire - Fatal编程技术网

Ios 如何使用Alamofire更改全局变量?

Ios 如何使用Alamofire更改全局变量?,ios,swift,uitableview,closures,alamofire,Ios,Swift,Uitableview,Closures,Alamofire,我想用Alamofire获取用户数据并将其填充到tableView中 我的代码: class MainTableViewController: UITableViewController { var userEntries = [UserEntries]() override func viewDidLoad() { super.viewDidLoad() fetchUserData { (ue) in

我想用Alamofire获取用户数据并将其填充到tableView中

我的代码:

class MainTableViewController: UITableViewController {
    var userEntries = [UserEntries]()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        fetchUserData { (ue) in
            print("ue.count is: \(ue.count)")
            self.userEntries = ue
            print("self.userEntries.count in this block: \(self.userEntries.count)")
        }

        print("self.userEntries.count in viewDidLoad is: \(self.userEntries.count)")
    }

    func fetchUserData(completion: @escaping ([UserEntries]) -> Void) {
        //another code...

        Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding(destination: .httpBody), headers: headers).responseJSON { (response) in
            switch response.result {
            case .success(let value):
                let json = JSON(value)
                let data = json["mydata"][0].array
                var userEntries = [UserEntries]()
                //I have 2 records only        
                data?.forEach({ (p) in
                    userEntries.append(UserEntries(id: p["id"].stringValue, date: p["date"].stringValue, text: p["text"].stringValue))
                })
                completion(userEntries)
            case .failure(let error):
                print(error.localizedDescription)
            }
        }
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.userEntries.count //it is return 0...
    }
}
在viewDidLoad中,我打印了以下内容:

viewDidLoad中的self.userEntries.count为:0//它必须为2

ue.计数为:2

此块中的self.userEntries.count:2

在numberOfRowsInSection方法中返回0,因为

viewDidLoad中的self.userEntries.count为:0//它必须为2


如何正确设置“self.userEntries”变量(数组),以便在tableView方法中使用它?

由于获取数据的调用是异步的,因此需要在完成中重新加载该表

fetchUserData { (ue) in
   print("ue.count is: \(ue.count)")
   self.userEntries = ue
   print("self.userEntries.count in this block: \(self.userEntries.count)")
   self.tableView.reloadData()
}