遍历快照子项并追加数组

时间:2019-07-29 21:52:25

标签: ios swift firebase-realtime-database

我正在尝试创建一种搜索功能,该功能将返回所有带有常见标签的帖子。我已经关闭了,但是我无法追加我的“职位”数组,我也不明白为什么。

在这里,我已经查看了几个答案,使用了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逐个迭代,但是我无法获取帖子。

任何帮助将不胜感激!

0 个答案:

没有答案