Firebase文档获取异常:预览崩溃、构建成功但无用户数据显示
问题分析与解决
错误根源
你碰到的Argument passed to call that takes no arguments报错,是因为Firebase Firestore的DocumentSnapshot.data(as:)方法在新版本里调用逻辑变了,旧写法已经失效。再加上代码里错误处理不到位,导致用户数据解析失败,才会出现预览崩溃、设备上显示空白的情况。
修复步骤
1. 修正数据解析代码
新版本的data(as:)需要显式处理错误,不能直接用try?配合可选链调用。先确保快照存在,再做解析:
Collection_Users.document(uid).getDocument { snapshot, error in // 先处理请求错误 if let error = error { print("拉取用户数据失败:\(error.localizedDescription)") return } // 确认快照存在且有数据 guard let snapshot = snapshot, snapshot.exists else { print("找不到对应用户的文档") return } // 正确解析用户数据 do { let user = try snapshot.data(as: User.self) // 回到主线程更新UI数据 DispatchQueue.main.async { self.currentUser = user } } catch { print("解析用户数据出错:\(error.localizedDescription)") } }
2. 检查User结构体
你的User结构体必须遵循Codable协议,而且属性名要和Firestore文档里的字段完全一致(大小写敏感),示例:
struct User: Identifiable, Codable { let id: String let email: String let username: String // 其他你需要的属性 }
3. 额外排查项
- 确认Firebase控制台里
Collection_Users集合的文档ID和用户UID完全匹配 - 检查Firestore安全规则,确保当前用户有权限读取自己的文档(比如规则允许
request.auth.uid == resource.id) - 验证Xcode中Firebase依赖是最新版本,避免版本兼容问题
内容的提问来源于stack exchange,提问作者user21597059
相关产品推荐
相关产品推荐

