首页 > 解决方案 > 如何使firebase .observeSingleEventOf函数同步运行

问题描述

我正在运行 Firebase 的.getSingleEventOf函数来从我的程序中的数据库中读取数据,它是一个异步函数。我将如何使其同步(或创建另一个同步函数来容纳代码)?

我尝试使用通过函数传递的数据,但它一直没有工作!它只返回 0 个元素,即使我知道我的数据库中有包含特定字母的数据。

import Foundation
import Firebase

struct CompeteUserFinderService {

    static func findCompetitors(contains letters: String?) -> [String] {
        //Make sure there was an input
        guard let letters = letters else { return [] }

        var usernames = [String]()

        //Database reference
        let ref = Database.database().reference().child("usernames")
        ref.observeSingleEvent(of: .value) { (snapshot) in

            //Creates an array of all values in the usernames branch
            let value = Array((snapshot.value as! [String: Any]).keys)
            usernames = value.map { $0.lowercased() }.filter { $0.contains(letters.lowercased()) }

        }

        return usernames
    }
}

标签: iosswiftfirebasefirebase-realtime-database

解决方案


推荐阅读