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.
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")
}})
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.