Swift 5.5 如何结合 async/await 使用 Firebase Realtime Database?
Firebase Realtime Database 原生 async/await 支持说明
首先可以明确:Firebase 官方已经原生提供了 Realtime Database 对应的 async/await 接口,不需要你手动通过 withCheckedThrowingContinuation 封装,也不需要依赖 Xcode 自动合成接口。
具体相关说明如下:
- 适配版本要求:你需要将项目中的 Firebase SDK 升级到 8.0.0 及以上版本,同时项目 Swift 版本 ≥5.5、iOS 部署目标 ≥iOS 13,即可直接使用官方提供的异步接口。
- 常见操作的用法示例:
- 单次数据查询:原来需要传入 completion 回调的
observeSingleEvent方法,现在可以直接调用getData()异步方法:// 新写法 let snapshot = try await ref.child("user/123").getData() let value = snapshot.value as? [String: Any] // 错误会通过 try 直接抛出,不需要在回调中处理 - 持续实时数据监听:官方针对长期监听场景提供了
AsyncSequence适配,你可以通过 for-await-in 语法直接遍历实时推送的快照:let stream = ref.child("chat/messages").observe(.value).values for try await snapshot in stream { // 处理每次收到的最新数据快照 } - 写入、更新、删除、事务等其他所有异步操作,官方都已经提供了对应的 async 版本接口,直接调用即可。
- 单次数据查询:原来需要传入 completion 回调的
- 关于 Xcode 自动合成的说明:Xcode 本身不会自动为第三方的闭包回调 API 生成 async 适配接口,只有第三方库官方主动适配 Swift Concurrency 规范后,你才能直接调用对应的异步方法。
内容的提问来源于stack exchange,提问作者Anton
相关产品推荐
相关产品推荐

