致命错误:在展开可选值时意外发现nil(Swift& Parse)

时间:2015-07-22 18:48:36

标签: ios xcode swift parse-platform

当我单独发布文本时,会发生此错误。但是当我发布带有文本的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
}

我迷失了,我已经尝试了很多但每次都失败了,有什么想法吗?

谢谢!

1 个答案:

答案 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")
}