【问题标题】: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

【问题讨论】:

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

标签: swift swiftui


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-09-28
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2020-10-24
    • 1970-01-01
    • 2021-04-03
    • 2021-03-19
    相关资源
    最近更新 更多