我有一个这样的函数,当我用按钮重新加载这个函数时,collectionViewTable第二次显示相同的数据,.How,我能解决吗??
func getWallpaperFromDB(){
let databaseRef = Database.database().reference()
databaseRef.child("wallpapers").observe(DataEventType.childAdded) { (snapshot) in
if let value = snapshot.value! as? [String: Any] {
let categoryID = value["categoryID"] as! String
let categoryName = value["categoryName"] as! String
let wallpaperName = value["wallpaperName"] as! String
let wallpaperId = snapshot.key
let DBWallpaper = Wallpaper(categoryID: categoryID, categoryName: categoryName, wallpaperId: wallpaperId, wallpaperName: wallpaperName)
self.wallpapers.append(DBWallpaper)
self.collectionViewTable.reloadData()
}
}
}
@IBAction func slideMenuButton(_ sender: Any) {
getWallpaperFromDB()
}
发布于 2018-05-28 19:51:04
你需要清除所有的呼叫
@IBAction func slideMenuButton(_ sender: Any) {
wallpapers.removeAll()
getWallpaperFromDB()
}
发布于 2020-09-14 22:42:28
你可以在闭包函数中清空你的墙纸数组。这样,每次调用函数时,在再次获取数据之前,墙纸数组将为空。这样你就不会有重复的数据了。
func getWallpaperFromDB(){
let databaseRef = Database.database().reference()
databaseRef.child("wallpapers").observe(DataEventType.childAdded) { (snapshot) in
self.wallpapers = []
if let value = snapshot.value! as? [String: Any] {
let categoryID = value["categoryID"] as! String
let categoryName = value["categoryName"] as! String
let wallpaperName = value["wallpaperName"] as! String
let wallpaperId = snapshot.key
let DBWallpaper = Wallpaper(categoryID: categoryID, categoryName: categoryName, wallpaperId: wallpaperId, wallpaperName: wallpaperName)
self.wallpapers.append(DBWallpaper)
self.collectionViewTable.reloadData()
}
}
}
@IBAction func slideMenuButton(_ sender: Any) {
getWallpaperFromDB()
}
https://stackoverflow.com/questions/50565640
复制相似问题