Ios &引用;致命错误:在展开可选值“0”时意外发现“0”将图像发布到FaceBook

Ios &引用;致命错误:在展开可选值“0”时意外发现“0”将图像发布到FaceBook,ios,swift,facebook,image,runtime-error,Ios,Swift,Facebook,Image,Runtime Error,我收到这个信息: 致命错误:在展开可选值时意外发现nil 我意识到这是一个常见的错误,这里有许多线程与它的可能来源有关。我只是不知道为什么会收到错误消息 当我按下“FaceBook共享”按钮时,就会出现这个错误——该按钮会在应用程序中截图并将其发布到FaceBook。这是我的代码: import UIKit import MessageUI import Social class ViewController: UIViewController, MFMailComposeViewContro

我收到这个信息:

致命错误:在展开可选值时意外发现nil

我意识到这是一个常见的错误,这里有许多线程与它的可能来源有关。我只是不知道为什么会收到错误消息

当我按下“FaceBook共享”按钮时,就会出现这个错误——该按钮会在应用程序中截图并将其发布到FaceBook。这是我的代码:

import UIKit
import MessageUI
import Social

class ViewController: UIViewController, MFMailComposeViewControllerDelegate, MFMessageComposeViewControllerDelegate {

@IBAction func shareToFB(sender: AnyObject) {

    // Declare the snapshot boundaries
    let top: CGFloat = 70
    let bottom: CGFloat = 100

    // The size of the cropped image
    let size = CGSize(width: view.frame.size.width, height: view.frame.size.height - top - bottom)

    // Start the context
    UIGraphicsBeginImageContextWithOptions(size,true,0.0)

    // use context
    let context = UIGraphicsGetCurrentContext()!

    // Transform the context 
    CGContextTranslateCTM(context, 0, -top)

    // Draw the view into the context (the snapshot)
    view.layer.renderInContext(context)
    let snapshot = UIGraphicsGetImageFromCurrentImageContext()

    // End the context 
    UIGraphicsEndImageContext()


    let composeSheetFB = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
    composeSheetFB.addImage(snapshot)
    self.presentViewController(composeSheetFB, animated: true, completion: nil)

}
我有相同的代码在推特上分享被裁剪的图片,它工作正常,没有任何错误——在推特和FaceBook之间有明显的参考变化


如果有人能让我知道我做错了什么,我将不胜感激。谢谢

根据Apple文档,您只能在
UIView()
中的
drawRect()
函数内调用
UIGraphicsGetCurrentContext()
,否则它返回nil,强制展开会抛出错误。否则,您需要首先使用
UIGraphicsPushContext()

希望这能有所帮助

编辑:
这里也有人问:

哪一行会崩溃?我相信是这一行:
let context=UIGraphicsGetCurrentContext()谢谢。我来看看那些参考资料。看起来很奇怪,我的电子邮件、短信、推特和其他共享都使用了相同的代码,并且没有错误,但是当涉及到FaceBook共享时,它会出现致命错误?