2015-10-13 59 views
1

我有一個顯示健康食譜的項目。該項目將JSON對象從Alamofire返回到Arraylist,然後返回Tableview中的Table Cell。當我將所有對象加載到tableview時,它會加載...很慢。 8+秒。但我的目標是3秒。我知道問題在於alamofire,因爲我檢查了打印(時間戳)。我做錯了什麼?Swift 2.0 + Alamofire 3.0 - 緩慢加載JSON

func getCookData(urlString: String , completionHandler: (String, String, String, String, String, String, String, String, String, String, String, String, String, String, String) ->()) ->(){ 



    Alamofire.request(.GET, urlString).responseJSON() { 
     response in 
     // var cookArray:[CookData] = [] 

      if response.result.isSuccess { 
      let data = response.result.value 

      let cookJson = JSON(data!) 

      for (var i = 0; i < cookJson["data"].count; i++){ 

      let category = cookJson["data"][i]["kategorie"].stringValue 
      let nameOfRecipe = cookJson["data"][i]["nazev"].stringValue 
      let preparationTime = cookJson["data"][i]["priprava"].stringValue 
      let cookingTime = cookJson["data"][i]["vareni"].stringValue 
      let dificulty = cookJson["data"][i]["obtiznost"].stringValue 
      let count = cookJson["data"][i]["pocet"].stringValue 

      var ingredience = String() 

      for var j = 0; j < cookJson["data"][i]["ingredience"].count; j++ { 

       let ingredienceX = cookJson["data"][i]["ingredience"][j].stringValue 

      ingredience = ingredience + "\n" + "- " + ingredienceX 

      } 

      let nutriInfo = cookJson["data"][i]["nutricni_informace"].stringValue 
      let kcal = cookJson["data"][i]["nutricni_informace"]["Kcal"].stringValue 
      let bilkoviny = cookJson["data"][i]["nutricni_informace"]["Bílkoviny"].stringValue 
      let sacharidy = cookJson["data"][i]["nutricni_informace"]["Sacharidy"].stringValue 
      let tukyy = cookJson["data"][i]["nutricni_informace"]["Tuky"].stringValue 
      let preparationMekanism = cookJson["data"][i]["postup_pripravy"].stringValue 
      let photo = cookJson["data"][i]["photos"][0].stringValue 
      let thumb = cookJson["data"][i]["thumb"].stringValue 

      self.printTimestamp() 

      completionHandler(category, nameOfRecipe, preparationTime, cookingTime, dificulty, count, ingredience, nutriInfo, preparationMekanism, photo, thumb, kcal, bilkoviny, sacharidy, tukyy) 
      } 

    } 
} 
} 
+0

如果加載速度慢,您的互聯網連接速度慢:)如果治療速度慢,這是一個程序化或硬件問題。你能更精確嗎?模擬器類型,iOS目標,您自己的Mac模型... – StrawHara

回答

0

所以......答案很簡單,我想加載數據是太多了,我做了(即使未使用數據)。解決這個問題的理想方法是隻取得你需要的東西,然後變得非常具體。

例如:**我有一個食譜。我想要得到所有的食譜並觀看它們。 解決方法:所以只能得到所有配方的ID和名稱,並將它們存儲在數組中,然後您需要顯示特定配方,編寫Alamofire方法以獲取該特定配方數據並使用該配方的ID進行調用參數。