首页 > 解决方案 > 迅速。然后 TableView 加载数据

问题描述

我有 2 个文件。首先 - TransactionsViewController。第二 - 获取交易。当我打开 TransactionsViewController 时,该视图中的表加载速度比 GetTransactions 中的日期快。因此,它显示为空白。如何解决?这是 TransactionsViewController 的代码viewDidLoad

override func viewDidLoad() {
    super.viewDidLoad()
    GetTransactions().getTransactions()
    clientsCount = GetTransactions.transactions.count
    setupNavBar()
    createTable()
    refreshSetup()
}

这是GetTransactions的代码:

class GetTransactions {

    static var transactionsArr = [[String : Any]]()
    static var transactions = [TransactionInfo]()

    let URL_GET_TRANSACTIONS = "https://mashkov.dev/sites/default/BankApp/Transactions/Transactions.php"

    func getTransactions(){
        GetTransactions.transactionsArr.removeAll()
        AF.request(URL_GET_TRANSACTIONS).responseJSON{ (response) in
            if (response.value as? [[String : Any]]) != nil {
                GetTransactions.transactionsArr = response.value as! [[String : Any]]
            }
            self.convertData()
            print(GetTransactions.transactions)
        }
    }

    func convertData() {
        GetTransactions.transactions.removeAll()
        for transaction in GetTransactions.transactionsArr {
            let cl = TransactionInfo(id: transaction["id"] as! String,
                                     payee: transaction["payee_account_id"] as! String,
                                     sender: transaction["sender_account_id"] as! String,
                                     transDate: transaction["trans_date"] as! String,
                                     amount: transaction["amount"] as! String,
                                     isSuccessfully: Bool((transaction["isSuccessfully"] as! String)) ?? true)
            GetTransactions.transactions.append(cl)
        }
    }
}

标签: swiftnetworkingviewdownloadalamofire

解决方案


您需要的是作为参数传递的闭包/块

class GetTransactions {

    static var transactionsArr = [[String : Any]]()
    static var transactions = [TransactionInfo]()

    let URL_GET_TRANSACTIONS = "https://mashkov.dev/sites/default/BankApp/Transactions/Transactions.php"

    func getTransactions(completion block: () -> ()){
        GetTransactions.transactionsArr.removeAll()
        AF.request(URL_GET_TRANSACTIONS).responseJSON{ (response) in
            if (response.value as? [[String : Any]]) != nil {
                GetTransactions.transactionsArr = response.value as! [[String : Any]]
            }
            self.convertData()
            print(GetTransactions.transactions)
            block()
        }
    }

    func convertData() {
        GetTransactions.transactions.removeAll()
        for transaction in GetTransactions.transactionsArr {
            let cl = TransactionInfo(id: transaction["id"] as! String,
                                     payee: transaction["payee_account_id"] as! String,
                                     sender: transaction["sender_account_id"] as! String,
                                     transDate: transaction["trans_date"] as! String,
                                     amount: transaction["amount"] as! String,
                                     isSuccessfully: Bool((transaction["isSuccessfully"] as! String)) ?? true)
            GetTransactions.transactions.append(cl)
        }
    }
}

你用它来称呼它,

        GetTransactions().getTransactions {
            clientsCount = GetTransactions.transactions.count
            //reload your tableView here
        }

推荐阅读