将两个不同的数组加载到表视图中 (Swift)
Loading two different arrays into tableview (Swift)
我有两个函数,一个用于获取我的所有帖子,另一个用于获取我使用 Firebase 提取的访客帖子。我希望将这两个功能组合到我的 tableview 中。执行此操作的最佳方法是什么?
var postArray = [Post]() //main array that feeds into tableview
var myArray = [Post]()
var guestArray = [Post]()
var DatabaseConnect = AuthenticationService()
private func fetchAllPosts() {
self.DatabaseConnect.fetchMyPosts {(myposts) in
self.DatabaseConnect.fetchGuestPosts {(posts) in
self.myArray = myposts
self.guestArray = posts
self.postArray = self.myArray + self.guestArray
self.tableView.reloadData()
}
}
}
以下是如何让它变得更好。
- 不要在不需要的地方使用
self
。例如:self.DatabaseConnect
.
- 对不相关的同时 API 调用使用 DispatchGroup()。
- 不要使用不必要的变量
myArray
和 guestArray
仅用于附加到主数组为什么不直接附加它。
- 使用
[weak self]
或 [unowned self]
同步后台任务。
代码如下:
var postArray = [Post]() //main array that feeds into tableview
var DatabaseConnect = AuthenticationService()
private func fetchAllPosts() {
let group = DispatchGroup()
postArray = []
group.enter()
DatabaseConnect.fetchMyPosts { [weak self] myposts in
self?.postArray.append(contentsOf: myposts)
group.leave()
}
group.enter()
DatabaseConnect.fetchGuestPosts { [weak self] guestPosts in
self?.postArray.append(contentsOf: guestPosts)
group.leave()
}
group.notify(queue: .main) {
self.tableView.reloadData()
}
}
为什么不重新加载 tableview 两次:
private func fetchAllPosts() {
self.DatabaseConnect.fetchMyPosts {(myposts) in
self.postArray.append(myposts)
self.tableView.reloadData()
}
self.DatabaseConnect.fetchGuestPosts {(guestPosts) in
self.postArray.append(guestPosts)
self.tableView.reloadData()
}
}
我有两个函数,一个用于获取我的所有帖子,另一个用于获取我使用 Firebase 提取的访客帖子。我希望将这两个功能组合到我的 tableview 中。执行此操作的最佳方法是什么?
var postArray = [Post]() //main array that feeds into tableview
var myArray = [Post]()
var guestArray = [Post]()
var DatabaseConnect = AuthenticationService()
private func fetchAllPosts() {
self.DatabaseConnect.fetchMyPosts {(myposts) in
self.DatabaseConnect.fetchGuestPosts {(posts) in
self.myArray = myposts
self.guestArray = posts
self.postArray = self.myArray + self.guestArray
self.tableView.reloadData()
}
}
}
以下是如何让它变得更好。
- 不要在不需要的地方使用
self
。例如:self.DatabaseConnect
. - 对不相关的同时 API 调用使用 DispatchGroup()。
- 不要使用不必要的变量
myArray
和guestArray
仅用于附加到主数组为什么不直接附加它。 - 使用
[weak self]
或[unowned self]
同步后台任务。
代码如下:
var postArray = [Post]() //main array that feeds into tableview
var DatabaseConnect = AuthenticationService()
private func fetchAllPosts() {
let group = DispatchGroup()
postArray = []
group.enter()
DatabaseConnect.fetchMyPosts { [weak self] myposts in
self?.postArray.append(contentsOf: myposts)
group.leave()
}
group.enter()
DatabaseConnect.fetchGuestPosts { [weak self] guestPosts in
self?.postArray.append(contentsOf: guestPosts)
group.leave()
}
group.notify(queue: .main) {
self.tableView.reloadData()
}
}
为什么不重新加载 tableview 两次:
private func fetchAllPosts() {
self.DatabaseConnect.fetchMyPosts {(myposts) in
self.postArray.append(myposts)
self.tableView.reloadData()
}
self.DatabaseConnect.fetchGuestPosts {(guestPosts) in
self.postArray.append(guestPosts)
self.tableView.reloadData()
}
}