SwiftUI+Firebase认证代码报错:AuthViewModel无userSession成员
SwiftUI + Firebase 项目中
userSession 成员不存在错误 问题详情
代码中执行以下语句时触发错误:
self.userSession = Auth.auth().currentUser
错误提示:
Value of type 'AuthViewModel' has no member 'userSession'
所有引用userSession的位置均出现相同错误,例如:
self.userSession = result.user
已导入所需依赖包:
import Foundation import Firebase import FirebaseFirestore import FirebaseAuth
背景说明
该代码此前可正常运行,未做任何修改但突然失效,已尝试以下操作均未解决:
- 重启Xcode
- 清理构建文件夹
- 更新/解析/重置包依赖
- 升级Xcode
- 重启MacBook
提供的 AuthViewModel 代码片段
class AuthViewModel: ObservableObject { @Published var currentUser: User? @Published var showInvalidUserCredentials: Bool = false @Published var errorMessage: String? @Published var showAlreadyExistingUserAlert = false var userNumber: Int = 0 init() { self.userSession = Auth.auth().currentUser Task { await fetchUser() } } // 其他代码 }
问题根源与修复方案
核心原因
你的AuthViewModel类中未声明userSession属性,但代码中直接对它进行赋值操作,这是编译器报错的直接原因。
修复步骤
在AuthViewModel的属性声明区域添加userSession的定义,根据Firebase Auth的类型规范,应声明为Auth.User?类型(如果需要让该属性的变化触发UI更新,可添加@Published修饰符):
修改后的AuthViewModel属性部分代码:
class AuthViewModel: ObservableObject { @Published var currentUser: User? @Published var userSession: Auth.User? // 新增此属性声明 @Published var showInvalidUserCredentials: Bool = false @Published var errorMessage: String? @Published var showAlreadyExistingUserAlert = false var userNumber: Int = 0 init() { self.userSession = Auth.auth().currentUser Task { await fetchUser() } } // 其他代码 }
补充排查方向
如果之前代码正常运行,可能是以下原因导致属性丢失:
- 代码被意外误删(如版本控制回滚、编辑时误操作)
- Xcode深层缓存异常(可手动删除DerivedData文件夹,路径为
~/Library/Developer/Xcode/DerivedData)
内容的提问来源于stack exchange,提问作者user2926337
相关产品推荐
相关产品推荐

