StateObject 作为 init() 中另一个对象的参数

StateObject as parameter for another object in init()

我正在尝试将 StateObject 用户传递给 authenticationHelper 但我不能,因为 IDE 表示 'self is used before all stored properties are initialized',即使它是在结构的开头初始化的。我考虑过将 user 的初始化移动到 init() 但是我又不能,因为它是一个 get-only 属性 并且必须立即初始化。有解决办法吗?

@main
struct Test: App {
    @StateObject var user: User = User()
    var authenticationHelper: AuthenticationHelper

    init(){
        self.authenticationHelper = AuthenticationHelper(user: user)
    }

    var body: some Scene {
        WindowGroup {
            LoginView(user: user)
        }
    } 
}

使用计算属性

struct Test: App {
    
    @StateObject var user: User = User()
    var authenticationHelper: AuthenticationHelper {
        return AuthenticationHelper(user: user)
    }
    
    init() {
    }
}

你也可以这样使用

struct Test: App {
    
    @StateObject var user: User
    var authenticationHelper: AuthenticationHelper
 
    init() {
        let user = User()
        self._user = StateObject(wrappedValue: user)
        self.authenticationHelper = AuthenticationHelper(user: user)
    }
}