我正在使用firebase实时数据库,它对我的应用程序的某些部分工作正常。我正在浏览youtube上的一个教程,该教程用户填充了一个collectionView。它使用NSDictionary来获取照片URL和用户名,并将它们放在所有用户的集合视图中。我直接在firebase控制台中删除了一些用户,现在只有一个用户。出于某种原因,它仍在拉动我删除的用户。这是collectionView文件。
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
}
}
这不应该始终与数据库同步吗?这些被删除的用户来自哪里?此外,我没有包含单元格代码,因为所有这些都是声明的imageView和Label操作。之前我遇到过这个问题,但是我的记忆很糟糕,我不记得为什么要这么做,或者我是否解决过它。
答案 0 :(得分:7)
好的,我找到了自己问题的答案。显然,模拟器有一个firebase的问题,似乎形成了某种firebase数据的缓存。我尝试在我测试的手机上运行它并且没有这个缓存,一切正常。此外,我尝试在模拟器中运行不同的设备,它也在那里工作正常。所以我想放弃它,因为我认为很多人可能会遇到Firebase的问题,因为它的核心功能与IOS模拟器不兼容。