因此,我试图使用从我的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)
}发布于 2016-05-26 21:07:21
在这种情况下,"myVar“将始终是1,因为类型值的单个事件是异步的。因此,执行的先后顺序是:
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路径的值,您必须将验证代码放入回调中。
https://stackoverflow.com/questions/37469914
复制相似问题