使用observeForSingleEventOfType崩溃

时间:2016-03-21 00:37:51

标签: ios swift firebase

我有这个方法:

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单元格出列有关,但我不确定如何解决这个问题。

有什么建议吗?

1 个答案:

答案 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{
            //
        }