StateObject 作为 init() 中另一个对象的参数
Posted
技术标签:
【中文标题】StateObject 作为 init() 中另一个对象的参数【英文标题】:StateObject as parameter for another object in init() 【发布时间】:2021-07-22 06:48:04 【问题描述】:我试图将 StateObject 用户传递给 authenticationHelper,但我不能,因为 IDE 说“在初始化所有存储的属性之前使用 self”,即使它是在结构的开头初始化的。我考虑过将 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)
【问题讨论】:
你可以试试这个:“var authenticationHelper: AuthenticationHelper?” 【参考方案1】:使用计算属性
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)
【讨论】:
你知道使用计算属性初始化AuthenticationHelper(user: user)
和init
有什么区别吗?以上是关于StateObject 作为 init() 中另一个对象的参数的主要内容,如果未能解决你的问题,请参考以下文章