我正在編寫一個Swift中的應用程序,它涉及通過遍歷數據庫查詢後附加的數組中的信息來填充表。我有viewDidLoad()
方法中的查詢,追加和tableView.reloadData()
。它工作正常。我也有幾乎完全相同的代碼寫入刷新函數,並在屏幕上進行響應。它也很好。但問題在於它非常繁忙。有很多代碼寫了兩次,我想知道什麼是解決這個問題的最好方法。下面是相關代碼:如何減少Swift中的代碼冗餘?
在viewDidLoad()
:
override func viewDidLoad() {
super.viewDidLoad(){
//run query, append arrays
self.tableView.reloadData()
}refreshControl = UIRefreshControl()
refreshControl!.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl!.addTarget(self, action: #selector(DisplayEventsTVC.refresh(_:)), forControlEvents: UIControlEvents.ValueChanged)
}
刷新功能:
func refresh(sender: AnyObject){{
//exact same query and appending
}
self.tableView.reloadData()
self.refreshControl?.endRefreshing()
}
查詢和追加是很長,所以我想一個更好的方式來處理而不是簡單地將viewdidload()中的代碼複製並粘貼到刷新函數中並添加.endRefreshing()。什麼是最好/最有效的方式來做到這一點?
這一切都是在tableviewcontroller中完成的。
那麼,爲什麼不是「查詢追加「在'viewDidLoad'和'refresh'兩個獨立的函數中調用?看起來這個func需要提供一個完成處理程序,所以你可以控制'endRefreshing'的時間。假設「查詢和追加」是在一個單獨的線程中完成的,那麼'viewDidLoad'也需要'tableView.reloadData()'。 – Michael
@Michael,對不起,是的。 viewDidLoad確實有一個.reloadData(),我忘了把它放在問題中。什麼是設置完成處理程序以進行刷新的最佳方式...對於那些東西來說不太好。 –