2017-10-02 3 views
0

Weiß jemand, warum das nicht funktioniert? Die Tabellenansicht ist leer und zeigt nichts an, obwohl sich Elemente in der Datenbank und im Speicher befinden. Dies hat gut funktioniert, bevor ich das Laden der Bilder aus dem Speicher implementiert habe, die Sie am Ende dieses Codes sehen werden, den ich eingefügt habe. Die food.append() Anweisung war außerhalb der storageRef.getData() Schließung (da es nicht existierte) aber wenn ich Nehmen Sie es jetzt heraus, es wird nicht auf recipeImage zugreifen können, da es innerhalb der Schließung erklärt wird. Funktioniert es nicht, weil es in der Schließung ist? Wenn ja, wie repariere ich es?Schnell laden Bilder von Firebase

let parentRef = Database.database().reference().child("Recipes") 
    let storage = Storage.storage() 

    parentRef.observe(.value, with: { snapshot in 

     //Processes values received from server 
     if (snapshot.value is NSNull) { 

      // DATA WAS NOT FOUND 
      print("– – – Data was not found – – –") 

     } else { 

      //Clears array so that it does not load duplicates 
      food = [] 

      // DATA WAS FOUND 
      for user_child in (snapshot.children) { 

       let user_snap = user_child as! DataSnapshot 
       let dict = user_snap.value as! [String: String?] 

       //Defines variables for labels 
       let recipeName = dict["Name"] as? String 
       let recipeDescription = dict["Description"] as? String 
       let downloadURL = dict["Image"] as? String 

       let storageRef = storage.reference(forURL: downloadURL!) 

       storageRef.getData(maxSize: 1 * 1024 * 1024) { (data, error) -> Void in 

        let recipeImage = UIImage(data: data!) 

        food.append(Element(name: recipeName!, description: recipeDescription!, image: recipeImage!)) 
       } 
      } 
      self.tableView.reloadData() 
     } 
    }) 
+1

Wenn Sie 'self.tableView.reloadData bewegen()' 'nach food.append (Element (name: recipeName !, Beschreibung: recipeDescription !, image: rezeptImage!)) ', sehen, was ist das Verhalten? – 3stud1ant3

+0

ES FUNKTIONIERT !! Vielen Dank – random1234

+0

Großartig, ich habe es als Antwort hinzugefügt – 3stud1ant3

Antwort

1

Verschieben

self.tableView.reloadData() 

nach

food.append(Element(name: recipeName!, description: recipeDescription!, image: recipeImage!)) 
Verwandte Themen