当前位置: 动力学知识库 > 问答 > 编程问答 >

parse.com - Saving and retrieving an image from parse in swift

问题描述:

I have a class called ProfilePage and in that I am selecting an image to display as the profile picture. I have successfully opened an image using an ImagePickerController. However, I am having trouble uploading this image to my Parse.com dashboard into my 'Users' class.

I'm trying to upload the image from the UIImagePicker to Parse.com. I've followed a few tutorials and looked at the documentation for uploading files but they all add it to a new 'Class' in parse. I want to be able to upload into my 'Users' class where i have a field called 'Profile Picture'

class ProfilePage: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate{

@IBOutlet weak var backButton: UIButton!

@IBOutlet weak var profilePicture: UIImageView!

@IBOutlet weak var editProfilePicture: UIButton!

@IBOutlet weak var nameTag: UILabel!

@IBOutlet weak var Bio: UILabel!

@IBOutlet weak var saveProfileChanges: UIButton!

override func viewDidLoad() {

super.viewDidLoad()

nameTag.text = ((PFUser.current()?.username)!)

}

@IBAction func didTapSaveProfileChanges(_ sender: Any) {

PFUser.current()?.username = "Kane"

do {

try PFUser.current()?.saveInBackground(block: { (success, error) in

if error != nil {

print("unable to save new username")

}

else {

print("new username saved")

self.viewDidLoad()

}

})

} catch {

print("unable to save new username")

}

@IBAction func didTapBackButton(_ sender: Any) {

self.performSegue(withIdentifier: "GoToHomePage", sender: self)

}

@IBAction func didTapChooseImage(_ sender: Any) {

let imagePickerController = UIImagePickerController()

imagePickerController.delegate = self

let actionSheet = UIAlertController(title: "Photo Source", message: "Choose a source", preferredStyle: .actionSheet)

actionSheet.addAction(UIAlertAction(title: "Camera", style: .default, handler: { (action:UIAlertAction) in

if UIImagePickerController.isSourceTypeAvailable(.camera) {

imagePickerController.sourceType = .camera

self.present(imagePickerController, animated: true, completion: nil)

}

else {

print("There no is no camera available")

}

}))

actionSheet.addAction(UIAlertAction(title: "Photo Library", style: .default, handler: { (action:UIAlertAction) in

imagePickerController.sourceType = .photoLibrary

self.present(imagePickerController, animated: true, completion: nil)

}))

actionSheet.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))

self.present(actionSheet, animated: true, completion: nil)

}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

let image = info[UIImagePickerControllerOriginalImage] as! UIImage

profilePicture.image = image

picker.dismiss(animated: true, completion: nil)

}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {

picker.dismiss(animated: true, completion: nil)

}

If anyone has any suggestions, it would be much appreciated.

网友答案:

Here is my code, I use this code to upload my images to my bank

    let profileImageData = UIImageJPEGRepresentation(photoProfile.image!,0.00001)

    var myPFObj = PFObject(className:"YouClass")

    let myFile = PFFile(name: "ProfilePic", data: profileImageData!)    
    myPFObj.setObject(myFile!, forKey: "profile_picture")

    myPFObj.saveInBackgroundWithBlock {
      (success: Bool, error: Error?) -> Void in
      if (success) {

      } else {

      }
    }

I hope to help with something.

网友答案:

Firstly its important to look at the migration docs about moving from parse.com because it is soon to close down.

http://parse.com/migration

Now to your question. Here is a example in swift 3 for a current logged in user.

@IBOutlet weak var profilePicture: UIImageView!


// ImagePicker delegate
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {

        profilePicture.image = image
    }
    dismiss(animated: true, completion: nil)
}


@IBAction func updateProfileImage(_ sender: AnyObject) {
                let userToUpdate = PFUser.current()!


                    // Save Avatar
                    if profilePicture.image != nil {
                        let imageData = UIImageJPEGRepresentation(avatarImg.image!, 0.5)
                        let imageFile = PFFile(name:"avatar.jpg", data:imageData!)
                        userToUpdate["profilePicture"] = imageFile
                    }

                    // Saving block
                    userToUpdate.saveInBackground(block: { (succ, error) in
                        if error == nil {

                            print("Your Profile has been updated!")
                        } else {

                            print("Failed")

                    }})


    }
分享给朋友:
您可能感兴趣的文章:
随机阅读: