2017-02-14 53 views
0

追加到數組我終於能夠從火力點提取數據,我可以顯示,但由於某種原因,它不是追加到我希望它這裏的數組是我的代碼:元素不是從火力

override func viewDidLoad() { 
    super.viewDidLoad() 
    var arr = [String]() 
    DataService.instance.recievers.observeSingleEvent(of: .value) {(recipients: FIRDataSnapshot) in 
     if let recievers = recipients.value as? [String]{ 
      for i in recievers{ 
       print(i) 
       arr.append(i) 
      } 
     } 
    } 

    for i in arr{ 
     print(i) 
    } 
} 

數據從print(i)語句打印到控制檯,但是一旦我離開第一個for循環,它將清空數組。誰能告訴我爲什麼,以及如何解決這個問題?

回答

2

Firebase代碼是異步的。它是附加的,而是由一次追加到數組,你

for i in arr { 
    print(i) 
} 

語句已經執行。在從Firebase中檢索數據後,您應該回撥observeSingleEvent以內的某個功能。

override func viewDidLoad() { 
    super.viewDidLoad() 
    var arr = [String]() 
    DataService.instance.recievers.observeSingleEvent(of: .value) {(recipients: FIRDataSnapshot) in 
     if let recievers = recipients.value as? [String]{ 
      for i in recievers{ 
       print(i) 
       arr.append(i) 
      } 
      displayArray(arr) 
     } 
    } 
} 

func displayArray(name: [String]) { 
    for i in arr{ 
     print(i) 
    } 
} 
+0

這樣做,謝謝。 – andrewF