Как исправить этот сбой? Xcode 6 Свифт

Я кодирую только две функции. MailComposer и веб-просмотр. Но когда я запускаю свое приложение и перехожу на вкладку интерфейса электронной почты, происходит сбой «фатальная ошибка: неожиданно найдено nil при развертывании необязательного значения (lldb)». Когда я перехожу на вкладку, отображающую веб-просмотр, все работает нормально. Webview.loadRequest(request) что-то путает с почтовым кодированием. Но я не знаю, где я могу это сделать, чтобы обе функции работали.

Если кто-нибудь знает, как это исправить, пожалуйста, дайте мне знать. Спасибо.

Вот код для файла View.Controller.Swift...

import UIKit
import MessageUI


    class ViewController: UIViewController, MFMailComposeViewControllerDelegate {

        @IBOutlet weak var Webview: UIWebView!


        @IBOutlet weak var Subject: UITextField!

        @IBOutlet weak var Body: UITextView!




         var URLPath = "http://google.com"

        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            loadAddressURL()


        }


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




        @IBAction func SendEmail(sender: AnyObject) {

            var SubjectText = "Inquiry:"
            SubjectText += Subject.text

            var MessageBody = Body

            var toRecipients = ["[email protected]"]

            var mc: MFMailComposeViewController = MFMailComposeViewController()
            mc.mailComposeDelegate = self
            mc.setSubject(SubjectText)
            mc.setMessageBody(MessageBody.text, isHTML: false)
            mc.setToRecipients(toRecipients)

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


        }


        func mailComposeController(controller: MFMailComposeViewController!, didFinishWithResult result: MFMailComposeResult, error: NSError!) {
            switch result.value{


            case MFMailComposeResultCancelled.value:
                NSLog("Mail Cancelled")
            case MFMailComposeResultSaved.value:
                NSLog("Mail Saved")
            case MFMailComposeResultSent.value:
                NSLog("Mail Sent")
            case MFMailComposeResultFailed.value:
                NSLog("Mail Sent Failure: %@",[error.localizedDescription])
            default:
                break
            }

            self.dismissViewControllerAnimated(true, completion: nil)



        }
        func loadAddressURL(){

            let requestURL = NSURL(string:URLPath)
            let request = NSURLRequest(URL: requestURL!)
            Webview.loadRequest(request)

        }
    }

person Phillip    schedule 06.03.2015    source источник
comment
По этому поводу есть многочисленные вопросы/ответы. Проблема в том, что ваши переменные ! не связаны в Interface Builder, и поэтому при первом доступе к ним ! вызывает (ожидаемый) сбой. (см. stackoverflow.com/questions/27981488/)   -  person GoZoner    schedule 06.03.2015
comment
Как их связать в конструкторе интерфейсов?   -  person Phillip    schedule 06.03.2015
comment
@PhillipLebsack Убедитесь, что ваши ! переменные равны != nil, прежде чем что-либо с ними делать.   -  person Jojodmo    schedule 06.03.2015
comment
Спасибо...можете сделать туториал как это сделать?   -  person Phillip    schedule 06.03.2015
comment
В Xcode перетащите элемент пользовательского интерфейса, удерживая нажатой клавишу Control, на его @IBOutlet. Настройте Xcode с помощью «Показать редактор помощника», чтобы у вас была панель IB рядом с панелью исходного кода. (Есть и другие способы; это будет в учебнике по пользовательскому интерфейсу Xcode). Когда @IBOutlet привязано, рядом с @IBOutlet в исходном коде будет закрашенный кружок.   -  person GoZoner    schedule 06.03.2015
comment
Я подключил их правильно, и рядом с ними отображаются закрашенные кружки. Хотя все равно вылетает.   -  person Phillip    schedule 06.03.2015


Ответы (1)


Убедитесь, что нет предупреждающего сообщения, и привяжите все @IBOutlet к вашему ViewController.

введите здесь описание изображения

person Mohammad Nurdin    schedule 06.03.2015
comment
Итак, как мне это исправить? Я пробовал все, что мог придумать. Сбой говорит, что причиной является Webview.loadRequest(request). Но он привязан к UIWebView. Так почему же он вылетает, когда я пытаюсь зайти в почтовый интерфейс? - person Phillip; 07.03.2015