Swift iOS项目访问Firebase数据库时报连接被服务端强制断开错误如何修复
核心问题排查
你混淆了Firebase的两类数据库服务:你要访问的是Firestore 云数据库,但你当前写的代码是**Firebase Realtime Database(实时数据库)**的调用接口,这是触发报错的直接原因。
报错提示中提到的Firebase Database默认指代实时数据库,如果你项目未启用实时数据库服务、或是实时数据库的配置信息有误,调用实时数据库API时就会被服务端强制断开连接。
修复方案
1. 替换数据库依赖与调用方式
移除项目中实时数据库的相关依赖,导入Firestore依赖,替换为Firestore的读数据逻辑,示例代码如下:
import FirebaseFirestore // 读取cPosts集合数据 let db = Firestore.firestore() db.collection("cPosts").addSnapshotListener { [weak self] querySnapshot, error in guard let self = self, let documents = querySnapshot?.documents, error == nil else { print("数据读取失败: \(error?.localizedDescription ?? "未知错误")") return } // 提前清空数组,避免遍历过程重复清空导致数据丢失 self.posts.removeAll() for doc in documents { let postData = doc.data() as [String: AnyObject] let postKey = doc.documentID let post = CompPost(postKey: postKey, postData: postData) self.posts.append(post) } self.tableView.reloadData() }
2. 原有逻辑修正
你原来的代码中存在逻辑错误:遍历快照的循环内多次调用self.posts.removeAll(),最终只会保留最后一条遍历到的帖子数据,上述示例代码已经修正了该问题。
3. 配置校验
- 确认
GoogleService-Info.plist已经正确导入Xcode项目,未被手动修改过配置字段 - 确认Firebase控制台已启用Firestore服务,且安全规则配置允许当前访问身份读取
cPosts集合的数据
内容的提问来源于stack exchange,提问作者EAO123
相关产品推荐
相关产品推荐

