Arrays 将两个不同的数组加载到tableview(Swift)
我有两个函数,一个用于获取我所有的帖子,另一个用于获取我正在使用Firebase拉取的来宾帖子。我希望将这两个函数合并到我的tableview中。最好的方法是什么Arrays 将两个不同的数组加载到tableview(Swift),arrays,swift,firebase,uitableview,swift5,Arrays,Swift,Firebase,Uitableview,Swift5,我有两个函数,一个用于获取我所有的帖子,另一个用于获取我正在使用Firebase拉取的来宾帖子。我希望将这两个函数合并到我的tableview中。最好的方法是什么 var postArray = [Post]() //main array that feeds into tableview var myArray = [Post]() var guestArray = [Post]() var DatabaseConnect = AuthenticationService() private
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
myArray
和guestArray
仅用于附加到主数组为什么不直接附加它[弱自我]
或[无主自我]
执行同步后台任务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()
}
}
非常感谢。但它似乎不起作用。一旦点击group.leave,postArray看起来就清晰了。我做了一些编辑,添加了一些我遗漏的东西。再检查一遍,还是不行。当我在第一个group.leave之后打印postArray时,它会显示,但当我在第二个group.leave之后打印postArray时,第一个fetchMyPosts数组不会显示。请尝试使用断点了解工作流程,并在
leave()之前使用print语句
之后没有。因为我想能够在之后按日期对帖子进行排序-有办法吗?您的原始代码也没有对帖子进行排序。。Post中是否有日期变量?您是否编写了任何排序代码?是的,我计划添加self.postArray.sort{$0.postDate>$1.postDate},但不知道在代码中放在哪里。如果在第二次postArray之后添加排序,则初始加载不会同时对MyPost和GuestPost进行排序,只会对GuestPost进行排序。请在每次重新加载数据之前尝试添加两次排序。它应该是self.postArray=self.postArray.sort{$0.postDate>$1.postDate}问题是我们不知道DatabaseConnect是做什么的,这个问题有点模糊。我们也不知道您是否使用RTDB或Firestore。听起来像是从Firebase加载数据并填充数组,然后从Firebase读取更多数据并将其附加到数组中。但这并不清楚。我们也不清楚这些类数组变量都有哪些,但实际上并没有将它们用作类变量。你能澄清这个问题并解释代码在做什么吗?