繁体   English   中英

谁能帮助我使用Swift解决此错误

[英]Can any one help me to solve this error using Swift

您能帮助我解决此错误吗?我正尝试从Firebase数据库下载图像,这是我的代码,并且为该错误放置了快照。 谢谢这是Xcode中错误的快照

  import UIKit
  import FirebaseDatabase

  class ViewController: UIViewController , UITableViewDataSource , UITableViewDelegate {

   @IBOutlet weak var tableView: UITableView!

   var ref:FIRDatabaseReference?
   var Handle:FIRDatabaseHandle?
   var myClass = [Post]() 

   override func viewDidLoad() {
    super.viewDidLoad()

    tableView.delegate = self
    tableView.dataSource = self

    ref=FIRDatabase.database().reference()

    Handle = ref?.child("Posts").observe(.childAdded, with: { (snapshot) in
          let post = snapshot.valueInExportFormat()

          for url in post! as! [Post] {        // Error Here
             self.myClass.append(url)
            self.tableView.reloadData()
          }

          override func didReceiveMemoryWarning() {
          super.didReceiveMemoryWarning()
          // Dispose of any resources that can be recreated.
    }

   public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
          return myClass.count
     }

   public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        if  let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)as? TableViewCell{

       cell.MyImage.alpha = 0
       cell.textLabel?.text = PostData[indexPath.row]

       DispatchQueue.main.async(execute: {

       let imgurl = URL(string : self.myClass [(indexPath as       NSIndexPath).row].url)
       let imgdata = NSData(contentsOf: imgurl!)
       cell.MyImage.image = UIImage(data: imgdata as! Data)

       UIView.animate(withDuration: 0.5, animations: {
            cell.MyImage.alpha = 1
       })
   })

    return cell

    } else {

        let cell = TableViewCell()
        DispatchQueue.main.async(execute: {

            let imgurl = URL(string : self.myClass [(indexPath as NSIndexPath).row].url)
            let imgdata = NSData(contentsOf: imgurl!)
            cell.MyImage.image = UIImage(data: imgdata as! Data)
        })
        return cell
    }

 }





     }


    })


}

也许你想要:

for url in post! {
    var wrappedPost = Post()
    wrappedPost.url = url
    ... use wrappedPost for whatever you need a Post object for
}

有时简单的方法就是走。

假设您具有Firebase结构

Planets
  planet_4
    some_text = "My post about Mars"
    image_url = "images/mars.jpg"
  planet_2
    some_text = "My post about Venus"
    image_url = "images/venus.jpg"

并假设我们要加载每个文本和图像并在表格视图中显示。 我们可以通过以下两种方式之一来完成此操作,一次使用.childAdded一次,或者一次使用.value一次。 在此示例中,我们将一次遍历它们。

let planetsRef = myRootRef.child("Planets")

planetsRef.observe(.childAdded, with: { snapshot in
     let dict = snapshot.value as! [String: AnyObject]

     let text = dict["text"]
     let imageUrl = dict["image_url"]

     // Create a reference to the file you want to download
     let planetRef = storageRef.child(imageUrl) //storageRef is defined elsewhere

     // Download in memory with a maximum allowed size
     //   of 1MB (1 * 1024 * 1024 bytes)
     planetRef.dataWithMaxSize(1 * 1024 * 1024) { (data, error) -> Void in
         if (error != nil) {
             // Got an error so handle it
         } else {
             // Data for "images/some planet.jpg" is returned
             // let planetImage: UIImage! = UIImage(data: data!)
             // then add the text and the image to your dataSource array
             // and reload your tableview.
         }
     })
})

这未经测试,但可以提供总体思路

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM