在我viewDidLoad中()打印出一個函數Swift變量在賦值後仍然爲0?
override func viewDidLoad() {
super.viewDidLoad()
print("top count = \(getCurrentOrderNum())")
}
的結果的函數計算值喜歡這樣
func getCurrentOrderNum() -> Int{
var orderNum = 0
ref = Firebase(url: "urlhiddenforprivacy")
ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
let count = snapshot.childrenCount
orderNum = Int(count)
})
return orderNum
}
但它仍然打印0?我試圖把var orderNum:Int = Int()放在我的代碼的頂部,而不是放在我的getCurrentOrderNum函數中,但那不起作用。我知道它得到我ref.observe函數內正確的值,因爲當我跑這...它打印出正確的價值
ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
let count = snapshot.childrenCount
orderNum = Int(count)
print(orderNum) //*****THIS PRINTS THE RIGHT VALUE****
})
return orderNum
}
是'萬一observeSingleEventOfType'異步操作?那我想是...那是你的問題。 – Moritz
Idk坦白地說,但如果它是異步操作,我該如何解決它?像Eric D說的 –
說:'observeSingleEventOfType'是一個塊,似乎是異步的。所以在你的街區結束之前,你會回來。這就是爲什麼你總是打印0 – Mindhavok