我遇到了自定義類的初始化問題。當需要更新屬性的類被初始化時,我需要爲某些數據設置一個觀察者。最初,屬性可以是空的,這就是我在開始時設置它們的方式。但是,在所有成員初始化之前,Xcode仍會拋出一個閉包捕獲的「self」錯誤。這是一個縮短版本的代碼。初始化變量:在所有成員初始化之前由閉包捕獲的'self'
class Foo {
init() {
self.usersRef = ref.child("users")
self.usersRef.observe(DataEventType.value, with: { (snapshot) in
// snapshot error checking
// users is [String]
self.users = users
})
}
private var usersRef: DatabaseReference
private(set) var users: [String] = []
}
我也曾嘗試
class Foo {
init() {
self.users = [String]()
self.usersRef = ref.child("users")
self.usersRef.observe(DataEventType.value, with: { (snapshot) in
// snapshot error checking
// users is [String]
self.users = users
})
}
private var usersRef: DatabaseReference
private(set) var users: [String]
}
,確保之前的回調初始化。
From this question它似乎我只需要給屬性的初始值,但似乎並非如此。我寧願不必在初始化之後調用另一個函數來設置這些處理程序。
感謝您的幫助
你在哪裏初始化'usersRef'變量? – Vyacheslav
@Vyacheslav謝謝你,我錯過了這個問題,修正了它。 –