2017-02-14 36 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