2017-10-02 6 views
0

誰かがこれがなぜ機能していないのか知っていますか? tableViewは空であり、データベースとストレージに項目があっても何も表示されません。これは、私が貼り付けたこのコードの最後に表示されるストレージからイメージのロードを実装する前に正常に機能しました。food.append()ステートメントはstorageRef.getData()クロージャの外にあることがありましたが(存在しないため)それを取り除くと、クロージャ内で宣言されているので、recipeImageにアクセスすることはできません。閉鎖されているので機能しないのですか?もしそうなら、私はそれをどのように修正するのですか? recipeName!説明:ファイヤーベースからスウィフトローディングイメージ

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

後recipeDescription !、image:recipeImage!)) '、どのような動作を参照してください? – 3stud1ant3

+0

IT WORKS !! – random1234

+0

偉大な、私は答えとしてそれを追加しました – 3stud1ant3

答えて

1

移動

self.tableView.reloadData() 

あなたは `food.append(要素(名前の後に` `self.tableView.reloadDataを()を移動した場合

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