1

J'avais un problème lorsque mon application plantait et donnait l'erreur Index hors plage, mais après avoir éliminé la fonction pour obtenir imageFiles en arrière-plan, la tableView s'exécute normalement. Je pense que le problème était que deux appels getDataInBackground le confondaient.Swift Index hors de portée à cellForRowAtIndexPath avec deux appels pour getDataInBackground

Cependant, j'ai encore besoin de télécharger les données pour imageFiles, donc je me demande si quelqu'un a une solution pour comment je peux le faire dans cellForRowAtIndexPath. Toute aide est très appréciée :)

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

qu'est-ce que postImageFiles? image url array? –

+0

postImageFiles est un fichier PFFile. donc var postImageFiles = [PFFile]() –

Répondre

0

S'il est possible de charger l'image en utilisant l'URL, vous pouvez utiliser la bibliothèque SDWebImage, il télécharge les images en arrière-plan, a des options pour définir une image de support de place comme bien jusqu'à ce que l'image originale soit récupérée. Il fournit également des options pour la mise en cache des images. Voici le lien pour la bibliothèque: https://github.com/rs/SDWebImage

+0

Eh bien cela fonctionnerait-il pour un fichier PFF? Parce que postImageFiles est un tableau qui contient [PFFiles](), et j'exécute une requête pour les télécharger depuis Parse ci-dessus. –

+0

@FinnWolff Havent a essayé cette bibliothèque pour que les fichiers PFF soient francs. Semble que les fichiers d'analyse ont leur propre représentation, essayez-le. –

+0

Je vais essayer, mais utiliser getDataInBackground fonctionne vraiment, je ne peux pas l'appeler deux fois sans erreur, donc contourner ça pour que je puisse télécharger les données pour imageFiles et postImageFiles est mon problème principal –