ios - 如何使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
}
}
解决方案
推荐阅读
- python - 将列值划分为部分并将部分名称存储在新列 pandas 中
- python - 执行查询中的 Python mysql 连接器错误
- google-app-engine - 加载大图像时达到硬内存限制,加载时可能会下采样?
- python - m2m_changed : int() 参数必须是字符串、类似字节的对象或数字,而不是“设置”
- python-3.x - 执行 argparse 参数,以便它们在终端 / cmd 中传递
- python - 无论 CSS 类元素输入到 BeautifulSoup 的 find_all() 函数,我都会收到一个空列表作为输出
- docker - Dockerfile 运行咕噜声
- amazon-web-services - 为什么我的 EC2 实例没有注册到 ECS 集群
- java - 在 Mac 上使用 Java 命令在本地运行 DynamoDB
- c# - 如何通过脚本找到游戏对象的位置