2015-07-12 2 views
2

Je n'arrive pas à télécharger les images sur Parse. Je crois que le problème pourrait être lié à la taille du fichier d'image, mais selon ce lienImpossible d'importer des images en raison de la taille du fichier image

https://parse.com/questions/file-size-limit-in-uploads

chaque fichier peut être jusqu'à 10 Mo. Je peux télécharger avec succès 2 images où chaque image est de 1,7 Mo, mais l'appel stagne pour toujours dès que j'essaye de télécharger 2 images de plus de 2 Mo chacune. L'application ne plante pas, elle continue de se charger indéfiniment même après avoir attendu 5 minutes pour que les images se chargent. L'objet "Post" est bien sauvegardé, mais les images ne sont pas sauvegardées.

J'ai inclus le code approprié pour télécharger les images à analyser ci-dessous. Quelqu'un peut-il me faire savoir ce que je fais mal? Est-ce que cela a à voir avec le fait que je sauvegarde les images dans la classe appelée "Images" et ensuite en sauvegardant ce PFObject dans une liste avec les autres images, puis en sauvegardant cette liste d'images dans la colonne "Post"? Je voulais être en mesure d'accéder directement aux images liées à ce post sans avoir à faire un appel API supplémentaire pour récupérer les images associées à un poste. S'il vous plaît laissez-moi savoir si tout cela n'est pas clair.

var post = PFObject(className: "Post") 
post["caption"] = captionTextField.text 
post["user"] = PFUser.currentUser() 

post.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in 

     if success == false { 
      println("failed 1") 

      self.activityIndicator.stopAnimating() 
      UIApplication.sharedApplication().endIgnoringInteractionEvents() 
     } else { 

      let imageOneData = UIImagePNGRepresentation(self.imageOne) 

      let imageOneFile = PFFile(name: "imageOne.png", data: imageOneData) 

      let imageTwoData = UIImagePNGRepresentation(self.imageTwo) 

      let imageTwoFile = PFFile(name: "imageTwo.png", data: imageTwoData)     

      var images: [PFFile] = [imageOneFile, imageTwoFile] 

      var finishedUploads = 0 

      var listOfImages : [PFObject] = [] 

      for var i = 0; i < images.count; i++ { 
       var postImage = PFObject(className: "Images") 
       postImage["image"] = images[i] 
       postImage["postId"] = post.objectId 
       postImage["likes"] = 0 

       postImage.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in 


        finishedUploads++ 

        if success == false { 
         println("failed 3") 
        } else { 
         println("success 3") 

         println(postImage.objectId) 


         listOfImages.append(postImage) 

         if finishedUploads == images.count { 


          post["listOfImages"] = listOfImages 

          post.saveInBackgroundWithBlock{(success: Bool, error: NSError?) -> Void in 

           if success == false { 
            println("failed 10") 
           } else { 
            println("success 10") 

            var storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 

            if let tabViewController = storyboard.instantiateViewControllerWithIdentifier("Home") as? UINavigationController { 
             self.presentViewController(tabViewController, animated: true, completion: nil) 
            } else { 
             println("What should I do here?") 
            } 
           } 

           self.activityIndicator.stopAnimating() 
           UIApplication.sharedApplication().endIgnoringInteractionEvents() 
          } 
         } 
        } 
       } 
      } 

     } 
    } 
+0

Un message d'erreur s'affiche-t-il? – ndmeiri

+0

Il n'y a pas de message d'erreur. L'activitéIndicator continue d'animer pour toujours – josealvarado111

Répondre

13

Le problème était de savoir comment je représentais les données d'image. Il devrait être

let imageOneData = UIImageJPEGRepresentation(self.imageOne, 0.5) 

pas

let imageOneData = UIImagePNGRepresentation(self.imageOne) 

Après avoir téléchargé les données d'image à l'aide Parse UIImagePNGRepresentation, la taille des fichiers d'image ont grimpé à 3 fois leur taille d'origine. J'ai pu télécharger avec succès des images beaucoup plus grandes (jusqu'à 10 Mo comme décrit dans la documentation) en utilisant UIImageJPEGRepresentation.