Ответ 1
Это один из случаев, когда вам нужно сделать дополнительный шаг в Swift, поскольку он не понимает, что вы можете безопасно получить доступ к handle
внутри блока.
Один из способов работы с этим:
let ref = Firebase(url: "https://yours.firebaseio.com/")
var handle: UInt = 0
handle = ref.observeEventType(.Value, withBlock: { snapshot in
print(snapshot)
if snapshot.exists() && snapshot.value as! String == "42" {
print("The value is now 42")
ref.removeObserverWithHandle(handle)
}
})
Явным образом инициализируя переменную handle
, мы удаляем ошибку из компилятора Swift. Но, учитывая, что дескриптор будет установлен до вызова нашего блока, мы можем безопасно вызвать ref.removeObserverWithHandle(handle)
внутри блока.