Empty files included in Parse

I did where the user can select their photo and post it. My problem is when the internet is slow it takes a while to upload to the parsing cloud, but sometimes instead of images, empty files are added to the parsing due to this application crash. What's wrong?

@IBOutlet var profileimage: UIImageView!
@IBOutlet var addimageText: UIButton!
@IBOutlet var imageMessage: UITextField!



@IBAction func addimage(sender: AnyObject) {
    var imagePicker:UIImagePickerController = UIImagePickerController()
        imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
       imagePicker.delegate = self
    self.presentViewController(imagePicker, animated: true, completion: nil)


}
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
     profileimage.image = image
    self.dismissViewControllerAnimated(true, completion: nil)

    addimageText.titleLabel?.text = "Change"
}

func SwipeDown(){
    var swipe: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: "dismissKeyboard")

    swipe.direction = UISwipeGestureRecognizerDirection.Down

    self.view.addGestureRecognizer(swipe)

}

override func viewDidLoad() {
    super.viewDidLoad()
  SwipeDown()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}



func textFieldShouldReturn(textField: UITextField) -> Bool {

    textField.resignFirstResponder()

    return true;
}

func dismissKeyboard(){
    self.imageMessage.resignFirstResponder()
}



@IBAction func uploadbutton(sender: AnyObject) {
    var imageText = imageMessage.text



    if profileimage.image == nil{
        println("image not uploaded")
        var alertview:UIAlertView = UIAlertView()
        alertview.title = "Photo Upload Fail!"
        alertview.message = "Please Select The Image";
        alertview.delegate = self
        alertview.addButtonWithTitle("OK")
        alertview.show()


    } else {
     var images1 = PFObject(className: "images")
        images1["imageText"] = imageText
        images1["uploader"] = PFUser.currentUser()
        images1.saveInBackgroundWithBlock{
            (success: Bool,error: NSError?)-> Void in

            if error == nil {
                var imageData = UIImagePNGRepresentation(self.profileimage.image)
                var parseimagefile = PFFile(data: imageData)
                images1["imageFile"] = parseimagefile
                images1.saveInBackgroundWithBlock{
                    (success: Bool, error:NSError?)-> Void in

                    if error == nil{
                    println("image uploaded")
                        var alertview:UIAlertView = UIAlertView()
                        alertview.title = "Photo Uploaded "
                        alertview.message = "Photo Uploaded Successfully";
                        alertview.delegate = self
                        alertview.addButtonWithTitle("OK")
                        alertview.show()
                       self.performSegueWithIdentifier("imagetohome", sender: self)


                    }else {
                        println(error)
                        var alertview:UIAlertView = UIAlertView()
                        alertview.title = "Photo Upload Failed!"
                        alertview.message = "Photo Uploaded Unsuccessfully";
                        alertview.delegate = self
                        alertview.addButtonWithTitle("OK")
                        alertview.show()

                    }

                }

            }else {
                 println(error)
                var alertview:UIAlertView = UIAlertView()
                alertview.title = "Photo Upload Failed!"
                alertview.message = "Connection Failure";
                alertview.delegate = self
                alertview.addButtonWithTitle("OK")
                alertview.show()
            }
        }

    }
}

      

}

+3


source to share


1 answer


You are loading the image depending on the response to save the object, it might be because of this, sometimes it will not receive a successful call to load the image. Try it yourself and let me know if it works,



@IBAction func uploadbutton(sender: AnyObject) {
var imageText = imageMessage.text



if profileimage.image == nil{
    println("image not uploaded")
    var alertview:UIAlertView = UIAlertView()
    alertview.title = "Photo Upload Fail!"
    alertview.message = "Please Select The Image";
    alertview.delegate = self
    alertview.addButtonWithTitle("OK")
    alertview.show()


} else {
    var images1 = PFObject(className: "images")
    var imageData = UIImagePNGRepresentation(self.profileimage.image)
    var parseimagefile = PFFile(data: imageData)
    images1["imageFile"] = parseimagefile
    images1.saveInBackgroundWithBlock{
        (success: Bool, error:NSError?)-> Void in

        if error == nil{
            println("image uploaded")
            var alertview:UIAlertView = UIAlertView()
            alertview.title = "Photo Uploaded "
            alertview.message = "Photo Uploaded Successfully";
            alertview.delegate = self
            alertview.addButtonWithTitle("OK")
            alertview.show()
            self.performSegueWithIdentifier("imagetohome", sender: self)


        }else {
            println(error)
            var alertview:UIAlertView = UIAlertView()
            alertview.title = "Photo Upload Failed!"
            alertview.message = "Photo Uploaded Unsuccessfully";
            alertview.delegate = self
            alertview.addButtonWithTitle("OK")
            alertview.show()

        }

    }
    images1["imageText"] = imageText
    images1["uploader"] = PFUser.currentUser()
    images1.saveInBackgroundWithBlock{
        (success: Bool,error: NSError?)-> Void in

        if error == nil {


        }else {
            println(error)
            var alertview:UIAlertView = UIAlertView()
            alertview.title = "Photo Upload Failed!"
            alertview.message = "Connection Failure";
            alertview.delegate = self
            alertview.addButtonWithTitle("OK")
            alertview.show()
        }
    }

}
}
}

      

0


source







All Articles