You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:52:48