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 to share