不能在属性初始值设定项中使用实例成员 '';属性初始化程序在 '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”;属性初始化程序在“自我”可用之前运行