"unexpectedly found nil ..." 执行 webView.loadRequest(请求)时出错

"unexpectedly found nil ..." error when performing webView.loadRequest(request)

我正在尝试创建一个自定义 UIViewController 数组,其中每个控制器都包含一个 UIWebView。在 for 循环中,在 "loadRequest" 我得到 "fatal error: unexpectedly found nil while unwrapping an Optional value"。肯定有一个带有 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)
            }
        }

    }
}

任何指导将不胜感激。谢谢

很可能 ReportViewControllerreportVC 实例中的 reportWebView 未绑定(绑定到 nil)。 Xcode IB 将 IBOutlets 声明为 'implicitly unwrapped optionals' - 您需要为它们提供初始值。如果不这样做,第一次访问 属性 时会导致运行时异常。

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

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

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