我在初始化自定义类时遇到问题。当初始化类更新属性时,我需要在某些数据上设置一个观察者。最初,属性可以为空,这就是我在启动时设置它们的方式。但是,在所有成员初始化之前,Xcode仍会抛出由关闭捕获的“'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似乎我只需要给出属性初始值,但似乎并非如此。我希望在初始化之后不必调用另一个函数来设置这些处理程序。
感谢您的帮助
答案 0 :(得分:2)
尝试使用此块
{ [unowned self] (snapshot) in
// snapshot error checking
// users is [String]
self.users = users
})
或
{ [weak self] (snapshot) in
// snapshot error checking
// users is [String]
self?.users = users
})