我正在尝试创建一种搜索功能,该功能将返回所有带有常见标签的帖子。我已经关闭了,但是我无法追加我的“职位”数组,我也不明白为什么。
在这里,我已经查看了几个答案,使用了Firebase文档,并使用了一些教程来使我走到这一步。
此功能应 1-遍历我的数据库以查找与搜索文本匹配的主题标签,并使用结果创建字典,似乎可以正常工作 2-从第一个字典中获取帖子ID,并使用函数“ getPostByKey”从数据库中检索帖子并将其附加到“ posts”数组中;也似乎正在遍历预期的帖子,但没有追加数组
//MARK: - GET POSTS BY HASHTAG SEARCH
class func getPostsByHashtag(hashtag: String?, completion: @escaping ([Post?]) -> Void) {
guard let hashtag = hashtag else { completion([]); return }
hashRef.queryOrderedByKey().queryStarting(atValue: hashtag).queryEnding(atValue: hashtag + "~").observeSingleEvent(of: .value) { (snapshot) in
print("Snapshot is: \(snapshot)")
if !snapshot.exists() {
completion([]); return
}
let enumerator = snapshot.children
var optionalPostDict: [[String : Any]?] = []
while let child = enumerator.nextObject() as? DataSnapshot {
let postDict = child.value as? [String : String]
optionalPostDict.append(postDict)
guard let postD = postDict else { return }
let dispatchGroup2 = DispatchGroup()
var posts = [Post]()
for pairs in postD {
dispatchGroup2.enter()
PostFirebase.getPostByKey(postKey: pairs.key, userID: pairs.value, completion: { (post) in
if let post = post {
posts.append(post)
}
dispatchGroup2.leave()
})
}
dispatchGroup2.notify(queue: .main, execute: {
print("end results posts =\(posts)")
completion(posts.reversed())
})
}
}
}
我希望获得所有标签符合搜索标准的帖子,即搜索“ jum”将返回具有jump,jump2,jump3作为标签的帖子。
我可以看到快照返回了所有内容,因此查询很好,可以在函数中看到帖子由1逐个迭代,但是我无法获取帖子。
任何帮助将不胜感激!