2016-02-25 2 views
1

Я получаю это сообщение:«Фатальная ошибка: неожиданно нашел ноль в то время как разворачивание необязательного значения» - Отправку изображения в фейсбуке

fatal error: unexpectedly found nil while unwrapping an Optional value

Я понимаю, что это общая ошибка, и что есть много потоков здесь, относящихся к его вероятному источнику. Я просто не знаю, почему я получаю сообщение об ошибке.

Эта ошибка возникает, когда я нажимаю кнопку «FaceBook share», которая делает снимок экрана в приложении и отправляет его в 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) 

} 

У меня есть идентичный код для совместного использования Twitter обрезанного изображения, и она работает без ошибок - с очевидными изменениями ссылочных повторно Twitter против FaceBook.

Если кто-нибудь может сообщить мне, что я делаю неправильно, очень ценю. Благодаря!

+1

на какой линии вы получаете ¨R аварии? –

+0

Я верю в эту строку: 'let context = UIGraphicsGetCurrentContext()!' –

ответ

3

В соответствии с документами Apple вы можете только позвонить UIGraphicsGetCurrentContext() внутри функции drawRect() в UIView(), в противном случае он возвращает nil, в котором происходит принудительное разворот, выдает ошибку. В противном случае вам нужно будет сначала вставить действительный контекст в стек вручную с помощью UIGraphicsPushContext() https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIKitFunctionReference/#//apple_ref/c/func/UIGraphicsGetCurrentContext

Надеюсь, это поможет.

Edit: Также попросили здесь: UIGraphicsGetCurrentContext seems to return nil

+0

Спасибо. Я посмотрю эти ссылки. Кажется странным, что у меня есть электронная почта, смс, твиттер и другое совместное использование с использованием того же кода, который работает без ошибок, но когда дело доходит до совместного использования FaceBook, оно срабатывает с фатальной ошибкой? –

Смежные вопросы

 Смежные вопросы