Swift - Firebase 快照到变量
Swift - Firebase snapshot into variable
所以我正在尝试使用从我的 firebase 数据库获取的快照来更改变量的内容。
我已经定义了变量,然后尝试使用 setValue
方法将本地存储变量的值更改为数据库中保存的值。然而,尽管没有出现错误,我的函数并没有像它应该的那样 运行 - 尽管我的变量显然是“0”,但没有任何东西被添加到数据库中。
这是我的代码:
var myVar = 1 as AnyObject
currentUserHasVotedVar.observeSingleEventOfType(.Value, withBlock: { snapshot in
myVar = snapshot.value
print(myVar)
//should be set to '0' from db
}, withCancelBlock: { error in
print(error.description)
})
if myVar as! NSObject == 0 {
print("Hasn't voted yet")
pollRef.childByAppendingPath("leave").childByAutoId()
myVar = 1
print(myVar)
}
在这种情况下 "myVar" 将始终为 1,因为 Value 类型的单个事件是异步的。所以执行顺序是第一个:
var myVar = 1 as AnyObject
然后..
if myVar as! NSObject == 0 {
print("Hasn't voted yet")
pollRef.childByAppendingPath("leave").childByAutoId()
myVar = 1
print(myVar)
}
(此代码永远不会执行,因为 myVar 始终为 1)最后执行回调的内容...
{ snapshot in
myVar = snapshot.value
print(myVar)
}, withCancelBlock: { error in
print(error.description)
}
为了访问 "currentUserHasVotedVar" 引用中 firebase 路径的值,您必须将验证代码放入回调中。
所以我正在尝试使用从我的 firebase 数据库获取的快照来更改变量的内容。
我已经定义了变量,然后尝试使用 setValue
方法将本地存储变量的值更改为数据库中保存的值。然而,尽管没有出现错误,我的函数并没有像它应该的那样 运行 - 尽管我的变量显然是“0”,但没有任何东西被添加到数据库中。
这是我的代码:
var myVar = 1 as AnyObject
currentUserHasVotedVar.observeSingleEventOfType(.Value, withBlock: { snapshot in
myVar = snapshot.value
print(myVar)
//should be set to '0' from db
}, withCancelBlock: { error in
print(error.description)
})
if myVar as! NSObject == 0 {
print("Hasn't voted yet")
pollRef.childByAppendingPath("leave").childByAutoId()
myVar = 1
print(myVar)
}
在这种情况下 "myVar" 将始终为 1,因为 Value 类型的单个事件是异步的。所以执行顺序是第一个:
var myVar = 1 as AnyObject
然后..
if myVar as! NSObject == 0 {
print("Hasn't voted yet")
pollRef.childByAppendingPath("leave").childByAutoId()
myVar = 1
print(myVar)
}
(此代码永远不会执行,因为 myVar 始终为 1)最后执行回调的内容...
{ snapshot in
myVar = snapshot.value
print(myVar)
}, withCancelBlock: { error in
print(error.description)
}
为了访问 "currentUserHasVotedVar" 引用中 firebase 路径的值,您必须将验证代码放入回调中。