2016-11-14 2 views
-1

스냅 샷에서 반환 된 자식 수를 가져올 수 없습니다. 그 코드는 나를 위해 노력하고 있습니다스냅 샷에서 자식 수를 가져올 수 없습니다.

class NewCarsViewController: UICollectionViewController { 
    var firebase: FIRDatabaseReference? 

    var newCars = FIRDataSnapshot() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.firebase = FIRDatabase.database().reference(fromURL:"https://firebaseURL/").child("featuredCars") 
     firebase?.observeSingleEvent(of: .value, with: { snapshot in 
      self.newCars = snapshot 
      print("halim") 
      print(self.newCars) 
      // print(snapshot.childrenCount) // I got the expected number of items 
      for rest in snapshot.children.allObjects as! [FIRDataSnapshot] { 
       // print(rest.value ?? "") 
      } 
     }) 

    } 

    override func numberOfSections(in collectionView: UICollectionView) -> Int { 
     return 1 
    } 
    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

     return 1 
    } 
    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "NewCarCell", for: indexPath) as UICollectionViewCell 
     return cell 
      } 

} 
+0

는 지금, 나는 정적 클래스를 만들어 작업하고 난 AppDelegate에 –

+0

self.firebase = FIRDatabase.database() 참조를 충전.. (fromURL : "firebaseURL") 자녀 ("featuredCars") 중포 기지를? observeSingleEvent (of : .value, with : {snapshot in } GetFeaturedCars.newCars = snapshot –

답변

0

: 나는 다른 위치에 print(self.newCars)을 쓸 때 난 항상 Snap ((null)) (null) 얻을.

Firebase 블록 (클로저) 외부에서 인쇄물 (self.newCars)을 이동하고있는 것 같습니다.

Firebase가 데이터를 반환하는 데 시간이 걸리며 그 데이터는 클로저 내부에서만 유효합니다.

print 서술문이 클로저 외부에있는 경우, Firebase에서 데이터가 반환되기 전에 실행됩니다. 그러면 null이됩니다.

관련 문제