i trying display parse users image in tableview cell , run error when try pull image
could not cast value of type '_nsinlinedata' (0x1086e9cf8) 'pffile' (0x106b2ee80)
i'm trying figure out whether result of how i'm trying data or format image file saved in.
here how image being saved,
userregistrationviewcontroller.swift:
import uikit class userregistrationviewcontroller: uiviewcontroller { func displayalert(title:string, error:string) { var alert = uialertcontroller(title: title, message: error, preferredstyle: uialertcontrollerstyle.alert) alert.addaction(uialertaction(title: "ok", style: .default, handler: { action in })) self.presentviewcontroller(alert, animated: true, completion: nil) } @iboutlet var usernametextfield: uitextfield! @iboutlet var emailtextfield: uitextfield! @iboutlet var passwordtextfield: uitextfield! @iboutlet var profileimage: uiimageview! override func viewdidload() { super.viewdidload() var user = pfuser.currentuser() var fbsession = pffacebookutils.session() var accesstoken = fbsession.accesstokendata.accesstoken let url = nsurl(string: "https://graph.facebook.com/me/picture?type=large&return_ssl_resources=1&access_token="+accesstoken) let urlrequest = nsurlrequest(url: url!) nsurlconnection.sendasynchronousrequest(urlrequest, queue: nsoperationqueue.mainqueue(), completionhandler: { response, data, error in let image = uiimage(data: data) self.profileimage.image = image user["image"] = data user.saveinbackground() }) fbrequestconnection.startformewithcompletionhandler({ connection, result, error in user["name"] = result["name"] user.saveinbackground() println(result) }) } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. } @ibaction func registeruser(sender: anyobject) { var error = "" if usernametextfield.text == nil || emailtextfield.text == nil || passwordtextfield.text == nil { error = "please enter username, email , password" } if error != "" { displayalert("error in form", error: error) } else { var user = pfuser.currentuser() user.username = usernametextfield.text user.password = passwordtextfield.text user.email = emailtextfield.text user.saveinbackgroundwithblock { (succeeded: bool, signuperror: nserror!) -> void in if signuperror == nil { println(user.username) println(user.password) println(user.email) self.performseguewithidentifier("successfulregistration", sender: self) /*self.navigationcontroller?.setnavigationbarhidden(self.navigationcontroller?.navigationbarhidden == false, animated: true)*/ } else { if let errorstring = signuperror.userinfo?["error"] as? nsstring { error = errorstring string } else { error = "please try again later." } self.displayalert("could not sign up", error: error) } } } } }
here how trying pull , display data:
import uikit class searchusersregistrationviewcontroller: uiviewcontroller, uitableviewdelegate, uitableviewdatasource { var userarray : nsmutablearray = [] @iboutlet var tableview: uitableview! override func viewdidload() { super.viewdidload() tableview.delegate = self tableview.datasource = self loadparsedata() var user = pfuser.currentuser() } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. } func loadparsedata() { var query : pfquery = pfuser.query() query.findobjectsinbackgroundwithblock { (objects:[anyobject]!, error:nserror!) -> void in if error == nil { if let objects = objects { println("\(objects.count) users listed") object in objects { self.userarray.addobject(object) } self.tableview.reloaddata() } } else { println("there error") } } } let textcellidentifier = "cell" func numberofsectionsintableview(tableview: uitableview) -> int { return 1 } func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int { return self.userarray.count } func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell { let cell = tableview.dequeuereusablecellwithidentifier(textcellidentifier, forindexpath: indexpath) as! searchusersregistrationtableviewcell let row = indexpath.row var individualuser = userarray[row] as! pfuser var username = individualuser.username string var profilepicture = individualuser["image"] as! pffile profilepicture.getdatainbackgroundwithblock({ (result, error) in cell.userimage.image = uiimage(data: result) }) cell.usernamelabel.text = username return cell } @ibaction func finishaddingusers(sender: anyobject) { self.performseguewithidentifier("finishaddingusers", sender: self) } }
when save data pffile
, use of these methods:
+ filewithdata: + filewithname:data: + filewithname:contentsatpath: + filewithname:data:contenttype: + filewithdata:contenttype:
what you're doing you're setting pffile instance nsdata instance, when you're trying setting data of pffile instance nsdata instance