Firebase Swift集成报错:向无参数调用传递参数
解决方案
这个错误是因为你调用的document.data()方法本身不需要参数,但你传入了as: User.self,说明你的FirebaseFirestoreSwift版本和代码中的API不匹配,或者API使用方式错误。以下是几种修复方式:
方式1:更新FirebaseFirestoreSwift到最新版本
- 终端运行命令更新Pods:
pod update FirebaseFirestoreSwift - 确保你的
User类型实现了Codable协议:struct User: Codable { // 定义你的用户属性,比如name、email等 } - 重新运行项目,此时
document.data(as: User.self)应该可以正常工作。
方式2:兼容旧版本的解码方式
如果暂时不想更新Pod版本,可以改用手动解码:
do { guard let dataDict = document.data() else { return } let jsonData = try JSONSerialization.data(withJSONObject: dataDict) let user = try JSONDecoder().decode(User.self, from: jsonData) self.user = user } catch { print("Sync error: \(error)") }
方式3:使用旧版本的decode方法
部分旧版本的FirebaseFirestoreSwift提供了decode方法替代data(as:),可以尝试:
do { let user = try document.decode(User.self) self.user = user } catch { print("Sync error: \(error)") }
补充说明
- 确认你的
User模型的属性名称和Firestore文档中的字段名称完全匹配,或者使用CodingKeys自定义映射; - 如果你使用的是FirebaseFirestoreSwift的早期版本(比如<10.0),
data(as:)方法尚未推出,必须使用上述兼容方式。
内容的提问来源于stack exchange,提问作者AppleDev3
相关产品推荐
相关产品推荐

