我有这个方法:
func fetchImageWithKey(key: String, completion: UIImage -> ()) {
imagesEndPoint.childByAppendingPath(key).observeSingleEventOfType(.Value, withBlock: { snapshot in
guard let imageString = snapshot.value["imageString"] as? String else { return }
guard let imageData = NSData(base64EncodedString: imageString, options: .IgnoreUnknownCharacters), image = UIImage(data: imageData) else { fatalError() }
completion(image)
})
}
每次单元格在cellForRowAtIndexPath
中出列时都会调用。出于某种原因,在滚动浏览tableView时,此行guard let imageString = snapshot.value["imageString"] as? String else { return }
将会点击else
块。
我确保ref确实有关键" imageString"最后是String类型的值。我认为它与tableView单元格出列有关,但我不确定如何解决这个问题。
有什么建议吗?
答案 0 :(得分:0)
您确定:snapshot.value是字典。 你应该检查:
if let dic = snapshot.value as? NSDictionary{
guard let imageString = dic["imageString"] as? String else { return }
guard let imageData = NSData(base64EncodedString: imageString, options: .IgnoreUnknownCharacters), image = UIImage(data: imageData) else { fatalError() }
completion(image)
}else{
//
}