2016-07-30 11 views
1

Ich benutze Firebase Echtzeit-Datenbank und es funktioniert gut für einige Teile meiner App. Ich habe gerade ein Tutorial auf youtube durchgelesen, das einen collectionView mit Benutzern füllt. Es verwendet NSDictionary, um die Foto-URL und den Benutzernamen abzurufen, und legt sie für alle Benutzer in der Sammlungsansicht ab. Ich habe einige Benutzer direkt in der Firebase-Konsole gelöscht und habe jetzt nur noch einen Benutzer. Aus irgendeinem Grund zieht es immer noch die Benutzer, die ich gelöscht habe. Dies ist die CollectionView-Datei.Firebase ruft gelöschte Daten aus der Datenbank

import UIKit 
import FirebaseDatabase 

private let reuseIdentifier = "UserSearchCell" 

class UsersCollectionViewController: UICollectionViewController { 

var usersDict = NSDictionary?() 
var userNamesArray = [String]() 
var userImagesArray = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    DataService.ds.REF_USERS.observeEventType(.Value, withBlock :{ 
     (snapshot) in 
     self.usersDict = snapshot.value as? NSDictionary 
     for(userId,details) in self.usersDict!{ 
      let img = details.objectForKey("profileThumbUrl") as! String 
      let name = details.objectForKey("username") as! String 
      self.userImagesArray.append(img) 
      self.userNamesArray.append(name) 
      self.collectionView?.reloadData() 
     } 
    }) 

    self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier) 
} 

override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
    return 1 
} 

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return self.userImagesArray.count 
} 

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! UserSearchCell 

    let imageUrl = NSURL(string:userImagesArray[indexPath.row]) 
    let imageData = NSData(contentsOfURL: imageUrl!) 
    cell.userImage.image = UIImage(data:imageData!) 
    cell.userName.text = userNamesArray[indexPath.row] 

    return cell 
} 

}

Sollte dies nicht immer mit der Datenbank synchronisieren? Woher kommen diese gelöschten Benutzer? Außerdem habe ich den Zellcode nicht hinzugefügt, da es nur die ImageView- und Label-Aktionen sind, die deklariert werden. Ich bin schon vorher auf dieses Problem gestoßen, aber mein Gedächtnis ist schlecht und ich kann mich nicht erinnern, warum es es getan hat oder ob ich es jemals gelöst habe.

Antwort

7

Okay, ich habe die Antwort auf meine Frage gefunden. Anscheinend hat der Simulator ein Problem mit Firebase und scheint eine Art Cache von Firebase-Daten zu bilden. Ich habe versucht, es auf einem Handy laufen zu lassen, auf dem ich getestet hatte und es hatte diesen Cache nicht und alles funktionierte gut. Ich habe auch versucht, auf einem anderen Gerät im Simulator zu laufen und es funktionierte auch dort gut. Daher möchte ich das hier aufheben, da ich denke, dass viele Leute Probleme mit Firebase haben, da das Kernfeature nicht gut mit dem IOS-Simulator funktioniert.

+0

Simulatoren! Sie verursachen die Hälfte der Probleme der Welt :) – Fattie

+0

Guten Tag! Ich bin jetzt mit einem solchen Problem bereits auf einem echten Gerät konfrontiert. Aber ich habe in den Cache Firebase – Alexander

+1

aufgenommen Dann funktioniert alles korrekt, wenn Sie diese Funktion FIRDatabase.database() deaktivieren. PersistenceEnabled. Vielleicht ist das die Antwort auf meine andere Frage, die ich überprüfen werde. – Alexander

Verwandte Themen