Swift Error: EXE_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Swift Error: EXE_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

我正在尝试让这个 posting 应用程序类似于 instagram,但是当我按下撰写按钮后,我遇到了一个问题。这个按钮应该 post 图像,但它崩溃了。我在此处尝试使用我的应用程序上传 caption\image 后出现错误:

let imageData = UIImagePNGRepresentation(imageToBeUploaded!)!

它给我这个错误:EXE_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

请帮忙!

@IBOutlet weak var captionTextView: UITextView!
@IBOutlet weak var previewImage: UIImageView!



override func viewDidLoad() {
    super.viewDidLoad()

    captionTextView.delegate = self

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


@IBAction func addImageTapped(sender: AnyObject) {

    let imagePicker = UIImagePickerController()

    imagePicker.delegate = self
    imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    imagePicker.mediaTypes = UIImagePickerController.availableMediaTypesForSourceType(.PhotoLibrary)!
    imagePicker.allowsEditing = false

    self.presentViewController(imagePicker, animated: true, completion: nil)

}

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {

    self.previewImage.image = image

    self.dismissViewControllerAnimated(true, completion: nil)
}

func textViewShouldEndEditing(textView: UITextView) -> Bool {
    captionTextView.resignFirstResponder()
    return true;
}

@IBAction func composeTapped(sender: AnyObject) {

    let date = NSDate()
    let dateFormatter = NSDateFormatter()
    dateFormatter.timeStyle = NSDateFormatterStyle.ShortStyle
    dateFormatter.dateStyle = NSDateFormatterStyle.ShortStyle
    let localDate = dateFormatter.stringFromDate(date)

    let imageToBeUploaded = self.previewImage.image
    let imageData = UIImagePNGRepresentation(imageToBeUploaded!)!

    let file: PFFile = PFFile(data: imageData)!


    let fileCaption: String = self.captionTextView.text

    let photoToUpload = PFObject(className: "Posts")
    photoToUpload["Image"] = file
    photoToUpload["Caption"] = fileCaption
    photoToUpload["addedBy"] = PFUser.currentUser()?.username
    photoToUpload["data"] = localDate

    //Get bytes size of image
   /* var imageSize = Float(imageData!.length)
    //Transform into Megabytes
    imageSize = imageSize/(1024*1024)
    print("Image size is \(imageSize)Mb")
   */ 


    do{
        try photoToUpload.save()
    } catch _ {

    }

    print("Successfully Posted.")

    let vc = self.storyboard?.instantiateViewControllerWithIdentifier("postController")
    self.presentViewController(vc! as UIViewController, animated: true, completion: nil)


}

您似乎在解包一个可选值,但实际上没有检查它是否为 nil。

问题可能来自 let file: PFFile = PFFile(data: imageData)!。在打开变量之前必须检查 nil。