"意外地发现没有......"执行webView.loadRequest(请求)时出错

时间:2015-01-27 05:44:51

标签: ios swift uiwebview

我正在尝试创建一个自定义UIViewControllers数组,每个都包含一个UIWebView。在for循环中,在“loadRequest”中,我得到“致命错误:在展开Optional值时意外地发现nil”。肯定有一个带有URL的NSURLRequest,正在传入。如果我注释掉“reportVC.reportWebView.loadRequest(request)”,一切都运行得很好。

func createViewControllers(callback:(controllers:[ReportViewController])->()){
    var urls = [NSURL]()
    getPDFs { (pdfURLs) -> () in
        urls = pdfURLs

        let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main",bundle: nil)
        var reportControllers = [ReportViewController](count: urls.count, repeatedValue: ReportViewController())

        for (index,url) in enumerate(urls){

            var reportVC : ReportViewController = mainStoryboard.instantiateViewControllerWithIdentifier("ReportVC") as ReportViewController
            //reportVC.title = ""
            let request = NSURLRequest(URL: url)

            reportVC.reportWebView.loadRequest(request)
            reportControllers[index] = reportVC

            if reportControllers.count == urls.count{
                callback(controllers: reportControllers)
            }
        }

    }
}

非常感谢任何指导。感谢。

2 个答案:

答案 0 :(得分:4)

reportWebView reportVC实例中的ReportViewController很可能未绑定(绑定到nil)。 Xcode IB将IBOutlets声明为“隐式解包的选项” - 您需要为它们提供初始值。如果不这样做,第一次访问该属性时,将导致运行时异常。

通过确保reportWebView绑定到UIWebView来修复错误 - 无论是在故事板还是代码中。

答案 1 :(得分:0)

此外,在调用loadRequest()之前,请确保已正确初始化UIWebView对象。如果没有,您可能希望将URL存储在类的成员对象中,直到执行viewWillAppear()。

然后,从viewWillAppear()内部调用loadRequest()。