Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

firebase is retrieving deleted data from database

I'm using firebase realtime database and it's working fine for some parts of my app. I was going through a tutorial on youtube which populates a collectionView with users. It uses NSDictionary to get the photo URL and username and puts them in the collection view for all users. I deleted some of the users directly in the firebase console, and now have only one user. For some reason it's still pulling the users that I deleted. This is the collectionView file.

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
}

}

Shouldn't this always sync with the database? Where are these deleted users coming from? Also I didn't include the cell code because all it is is the imageView and Label actions being declared. I ran into this problem before but my memory is bad and I don't remember why it was doing it or if I ever solved it.

like image 577
Wayne Filkins Avatar asked Oct 26 '25 09:10

Wayne Filkins


1 Answers

Okay I figured out the answer to my own question. Apparently the simulator has a problem with firebase and seems to form some sort of cache of firebase data. I tried running it on a phone I had been testing on and it didn't have this cache and everything worked fine. Also I tried running on a different device IN the simulator and it worked fine there too. So I want to leave this up because I think a lot of people may have trouble with Firebase since it's core feature doesn't work well with the IOS simulator.

like image 119
Wayne Filkins Avatar answered Oct 28 '25 22:10

Wayne Filkins