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.
Simulatoren! Sie verursachen die Hälfte der Probleme der Welt :) – Fattie
Guten Tag! Ich bin jetzt mit einem solchen Problem bereits auf einem echten Gerät konfrontiert. Aber ich habe in den Cache Firebase – Alexander
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