我正在编写一个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(),我忘了把它放在问题中。什么是设置完成处理程序以进行刷新的最佳方式...对于那些东西来说不太好。 –