升级Xcode 13 beta后Firebase Firestore自定义结构体编码失效问题
问题触发原因
- 该问题是Xcode 13 Beta版本的常见兼容性问题,大量使用Firebase的开发者都遇到过相同报错,核心是Swift版本升级后的属性包装器编码逻辑变更,旧版本Firebase库未做适配。
- 升级Xcode后可能出现依赖导入失效的情况,如果你的文件头部没有显式导入
FirebaseFirestoreSwift,也会触发该报错,因为Codable模型自动转字典的能力是由该库提供的,不是FirebaseFirestore核心库的原生能力。
修复方案
方案1:无需升级依赖的即时修复
直接调用Firebase专门提供的Codable模型重载方法,修改你的setData调用代码即可:
try await databasemodel.database.collection("users").document(idToken).setData(from: newUser)
新增的from:参数是专门用于接收Codable类型的入口,绕过Xcode 13 Beta下失效的隐式类型转换逻辑,不需要修改你的模型定义即可正常编译运行。
方案2:永久适配修复
将你的Firebase全量依赖升级到8.0.0及以上版本,该版本及后续的Firebase版本已经完全适配Xcode 13+的Swift编译特性,升级后你原来的写法也可以正常运行。
额外注意事项
你当前的User模型定义不需要修改,@DocumentID属性不需要加入自定义的CodingKeys枚举,当前写法符合Firebase的编码规范。
内容的提问来源于stack exchange,提问作者Jonas Friederichs
相关产品推荐
相关产品推荐

