当我单独发布文本时,会发生此错误。但是当我发布带有文本的UIImage
时,它可以正常工作。
func postFeed(text: String, image: UIImage?) {
PFGeoPoint.geoPointForCurrentLocationInBackground { (geopoint, error) in
if let geopoint = geopoint {
let object = PFObject(className: "UserFeed")
object.setValue(text, forKey: "post")
let imageData = UIImageJPEGRepresentation(image, 0.75)
let imageFile = PFFile(name: "image.png", data: imageData) //ERROR HERE <<
object.setValue(imageFile, forKey: "imageFile")
object.setValue(geopoint, forKey: "location")
if let user = PFUser.currentUser() {
object.setValue(user, forKey: "fromUser")
}
object.saveInBackgroundWithBlock({ (success, error) -> Void in
dispatch_async(dispatch_get_main_queue()) {
//println("Success object saved to parse")
NSNotificationCenter.defaultCenter().postNotificationName(postNotification, object: success)
}
})
}
}
}
这是我将上传的图片分配给UIImageView
的地方。不知何故,我只需要获取该用户ID发布的图像,并将其分配给UIImageView
。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier, forIndexPath: indexPath) as! TalesTableViewCell
// Configure the cell...
if let posts = posts {
let object = posts[indexPath.row]
cell.tableLabel?.font = UIFont(name: "Avenir", size: 16)
cell.tableLabel?.text = object["post"] as? String
cell.tableLabel?.numberOfLines = 0
object["imageFile"]?.getDataInBackgroundWithBlock({ (imageData: NSData?, error: NSError?) -> Void in
if error == nil {
let image = UIImage(data: imageData!)
cell.tableImage.image = image
}
})
}
return cell
}
我迷失了,我已经尝试了很多但每次都失败了,有什么想法吗?
谢谢!
答案 0 :(得分:1)
您还需要对图像对象使用条件解包。
替换:
let imageData = UIImageJPEGRepresentation(image, 0.75)
let imageFile = PFFile(name: "image.png", data: imageData)
object.setValue(imageFile, forKey: "imageFile")
使用:
if let image = image
{
let imageData = UIImageJPEGRepresentation(image, 0.75)
let imageFile = PFFile(name: "image.png", data: imageData)
object.setValue(imageFile, forKey: "imageFile")
}