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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 19:32:07