更新 Firebase 代码后未显示 TableView 数据(Swift 2,Firebase 3.x)
TableView data not showing after updating Firebase code (Swift 2, Firebase 3.x)
一直在将我的项目更新到最新的 firebase 代码,现在 运行 遇到了问题。
昨天我的应用程序在我实施更新后运行良好,突然间我的 tableView 不再显示数据,甚至不在我的控制台中打印数据。
这是我的代码:
import UIKit
import Firebase
import MGSwipeTableCell
class FeedVCViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var posts = [Post]()
static var imageCache = NSCache()
var isPostHidden = false
var likeRef: FIRDatabaseReference!
var dislikeRef: FIRDatabaseReference!
var postRef: FIRDatabaseReference!
var postLiked = false
var postDisliked = false
private var _post: Post?
var post: Post? {
return _post
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 38, height: 38))
imageView.contentMode = .ScaleAspectFit
let image = UIImage(named: "unilogo2Whtie")
imageView.image = image
navigationItem.titleView = imageView
DataService.ds.REF_POSTS.observeEventType(.Value, withBlock: { snapshot in
print(snapshot.value)
self.posts = []
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshots {
print("SNAP: \(snap)")
if let postDict = snap.value as? Dictionary<String, AnyObject> {
let key = snap.key
let post = Post(postKey: key, dictionary: postDict)
self.posts.append(post)
}
}
}
self.tableView.reloadData()
})
// Do any additional setup after loading the view.
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
我肯定是在我假设的更新中做错了什么,有人可以帮忙吗?
我很惊讶你没有在以下行中收到错误:
var likeRef: FIRDatabaseReference!
var dislikeRef: FIRDatabaseReference!
var postRef: FIRDatabaseReference!
对我来说,我必须在 import Firebase 下面添加以下行,以免在声明数据库引用时出现错误:
import FirebaseDatabase
然后在您的 viewDidLoad 方法中,您需要添加对数据库的引用
likeRef = FIRDatabase.database().reference()
但是,使用这个新版本的 Firebase,您不需要单独引用 likeRef、dislikeRef 和 postRef。您可以只创建一个主要参考,然后访问参考的子项以获取这些详细信息。
一直在将我的项目更新到最新的 firebase 代码,现在 运行 遇到了问题。
昨天我的应用程序在我实施更新后运行良好,突然间我的 tableView 不再显示数据,甚至不在我的控制台中打印数据。
这是我的代码:
import UIKit
import Firebase
import MGSwipeTableCell
class FeedVCViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var posts = [Post]()
static var imageCache = NSCache()
var isPostHidden = false
var likeRef: FIRDatabaseReference!
var dislikeRef: FIRDatabaseReference!
var postRef: FIRDatabaseReference!
var postLiked = false
var postDisliked = false
private var _post: Post?
var post: Post? {
return _post
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 38, height: 38))
imageView.contentMode = .ScaleAspectFit
let image = UIImage(named: "unilogo2Whtie")
imageView.image = image
navigationItem.titleView = imageView
DataService.ds.REF_POSTS.observeEventType(.Value, withBlock: { snapshot in
print(snapshot.value)
self.posts = []
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshots {
print("SNAP: \(snap)")
if let postDict = snap.value as? Dictionary<String, AnyObject> {
let key = snap.key
let post = Post(postKey: key, dictionary: postDict)
self.posts.append(post)
}
}
}
self.tableView.reloadData()
})
// Do any additional setup after loading the view.
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}
我肯定是在我假设的更新中做错了什么,有人可以帮忙吗?
我很惊讶你没有在以下行中收到错误:
var likeRef: FIRDatabaseReference!
var dislikeRef: FIRDatabaseReference!
var postRef: FIRDatabaseReference!
对我来说,我必须在 import Firebase 下面添加以下行,以免在声明数据库引用时出现错误:
import FirebaseDatabase
然后在您的 viewDidLoad 方法中,您需要添加对数据库的引用
likeRef = FIRDatabase.database().reference()
但是,使用这个新版本的 Firebase,您不需要单独引用 likeRef、dislikeRef 和 postRef。您可以只创建一个主要参考,然后访问参考的子项以获取这些详细信息。