不能在属性初始值设定项中使用实例成员 '';属性初始化程序在 'self' 可用之前运行

Posted

技术标签:

【中文标题】不能在属性初始值设定项中使用实例成员 \'\';属性初始化程序在 \'self\' 可用之前运行【英文标题】:Cannot use instance member '' within property initializer; property initializers run before 'self' is available不能在属性初始值设定项中使用实例成员 '';属性初始化程序在 'self' 可用之前运行 【发布时间】:2021-12-29 18:57:44 【问题描述】:

有人可以帮我解决这个问题吗?

'不能在属性初始化器中使用实例成员'';属性初始化程序在 'self' 可用之前运行'

class ProfileViewModel: ObservableObject 

@Published var userInfo = UserModel(uid: "", username: "", pic: "", bio: "")

let ref = Firestore.firestore()
var uid: String

init(uid: String) 
    self.uid = uid
    
    fetchUser(uid: uid)  (user) in
        self.userInfo = user
    

struct

【问题讨论】:

欢迎来到 ***!编译器对使用两个uids 中的哪一个感到困惑。你想使用本地的。尝试重新输入并确保选择local,或者,您始终可以将初始化标头设置为init(uid initUID: String) 之类的内容,以防止任何混淆。 请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

正如警告所说,您不能在初始化程序中使用实例成员,因为它在 'self' 可用之前运行。

在这种情况下,self.userInfo 是您在属性初始化程序 init(uid: String) 中使用的实例成员,在对 fetchUser(uid: String) 的调用中。

基本上,您正在尝试在 ProfileViewModel 类准备好之前使用它。

【讨论】:

以上是关于不能在属性初始值设定项中使用实例成员 '';属性初始化程序在 'self' 可用之前运行的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript - 对象初始值设定项中的 Get 属性问题

SwiftUI Maps - 不能在属性初始化器中使用实例成员;属性初始化程序在 'self' 可用之前运行

不能在属性初始化器中使用实例成员“pdfName”;属性初始化程序在“自我”可用之前运行

Swift 不能在属性初始化器中使用实例成员

无法在属性初始化程序中使用实例成员,将变量设置为惰性不起作用

错误不能在属性初始化程序中使用实例成员“xxx”