【发布时间】:2017-06-15 07:01:43
【问题描述】:
我在初始化自定义类时遇到问题。当类初始化更新属性时,我需要在一些数据上设置一个观察者。最初,属性可以为空,这就是我在启动时设置它们的方式。但是,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 似乎我只需要给属性初始值,但似乎并非如此。我宁愿在初始化后不必调用另一个函数来设置这些处理程序。
感谢您的帮助
【问题讨论】:
-
你在哪里初始化
usersRef变量? -
@Vyacheslav 谢谢,我在问题中错过了这个问题,已修复。
标签: ios swift firebase firebase-realtime-database