迅速。然后 TableView 加载数据
Posted
技术标签:
【中文标题】迅速。然后 TableView 加载数据【英文标题】:Swift. Data is loaded after then TableView 【发布时间】:2020-06-18 14:18:38 【问题描述】:我有 2 个文件。首先 - TransactionsViewController。第二 - 获取交易。当我打开 TransactionsViewController 时,该视图中的表加载速度比 GetTransactions 中的日期快。因此,它显示为空白。如何解决?
下面是TransactionsViewControllerviewDidLoad
的代码:
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)
【问题讨论】:
你需要了解异步。if (response.value as? [[String : Any]]) != nil
将在您认为会后调用。
将闭包作为参数传递给getTransactions
,并在您进行API调用并完成处理后执行它。在关闭时重新加载表视图。你有你想要的
【参考方案1】:
你需要的是一个闭包/块作为参数传递
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
【讨论】:
以上是关于迅速。然后 TableView 加载数据的主要内容,如果未能解决你的问题,请参考以下文章
用tableview重新加载uiviewcontroller的table view subobject的数据
iOS tableView图片未知宽高加载优化 之 runloop