1

我有一個問題,我的應用程序崩潰,並給索引超出範圍錯誤,但在我取消後臺獲取imageFiles函數後,tableView運行一般。我認爲問題在於兩個getDataInBackground調用令人困惑。swift索引超出範圍在cellForRowAtIndexPath有兩個調用getDataInBackground

但是,我仍然需要下載imageFiles的數據,所以我想知道是否有人可以在cellForRowAtIndexPath中做到這一點。任何幫助是非常讚賞:)

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "userPhotoFeedCell", for: indexPath) as! FeedCell 

    if PFUser.current()?.objectId != nil { 

     cell.userUsername.text = PFUser.current()?.username 

    } 


    //downloades images and items to populate user post 
    postImageFiles[indexPath.row].getDataInBackground { (data, error) in 

     if let userPostImageData = data { 

      let downloadedUserPostImage = UIImage(data: userPostImageData) 

      cell.userFeedPhoto.image = downloadedUserPostImage 

     } 


    } 

    /* IF THIS ISN't COMMENTED APP GIVES INDEX OUT OF RANGE CRASH 
    //downloads images for user profile pic 
     imageFiles[indexPath.row].getDataInBackground { (data, error) in 

    if let imageData = data { 

    let downloadedImage = UIImage(data: imageData) 

    cell.userProfilePic.image = downloadedImage 

    } 


    } 
    */ 

    cell.postLocation.text = postLocation[indexPath.row] 

    cell.postCaption.text = postCaptions[indexPath.row] 

    cell.userFeedPhoto.image = UIImage(named: "OrangeFuego") 

    cell.userProfilePic.image = UIImage(named: "usericon.png") 

    return cell 

} 
+1

什麼是postImageFiles?圖像的網址數組? –

+0

postImageFiles是一個PFFile。所以var postImageFiles = [PFFile]() –

回答

0

如果加載使用URL的圖像是可行的,你可以利用SDWebImage庫,它在後臺下載圖像,有選項來設置一個佔位符圖像直到獲取原始圖像。它還提供緩存圖像的選項。 這是圖書館的鏈接: https://github.com/rs/SDWebImage

+0

那麼這將工作的PFFile?因爲postImageFiles是一個包含[PFFiles]()的數組,所以我正在運行一個查詢以便從上面的Parse中下載它們。 –

+0

@FinnWolff沒有嘗試過這個PFFiles庫來坦率。似乎解析文件有其自己的表示形式,請嘗試一下。 –

+0

我會試一試,但使用getDataInBackground絕對有效,我不能兩次調用它沒有錯誤,所以解決這個問題以便我可以下載imageFiles和postImageFiles的數據是我的主要問題 –