"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)
}
}
}
}
任何指导将不胜感激。谢谢
很可能 ReportViewController
的 reportVC
实例中的 reportWebView
未绑定(绑定到 nil
)。 Xcode IB 将 IBOutlets 声明为 'implicitly unwrapped optionals' - 您需要为它们提供初始值。如果不这样做,第一次访问 属性 时会导致运行时异常。
通过确保 reportWebView
绑定到 UIWebView
来修复错误 - 无论是在您的故事板还是您的代码中。
此外,请确保在调用 loadRequest() 之前已正确初始化 UIWebView 对象。如果不是,您可能希望将 URL 存储在 class 的成员对象中,直到执行 viewWillAppear() 为止。
然后,从 viewWillAppear() 内部调用 loadRequest()。
我正在尝试创建一个自定义 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)
}
}
}
}
任何指导将不胜感激。谢谢
很可能 ReportViewController
的 reportVC
实例中的 reportWebView
未绑定(绑定到 nil
)。 Xcode IB 将 IBOutlets 声明为 'implicitly unwrapped optionals' - 您需要为它们提供初始值。如果不这样做,第一次访问 属性 时会导致运行时异常。
通过确保 reportWebView
绑定到 UIWebView
来修复错误 - 无论是在您的故事板还是您的代码中。
此外,请确保在调用 loadRequest() 之前已正确初始化 UIWebView 对象。如果不是,您可能希望将 URL 存储在 class 的成员对象中,直到执行 viewWillAppear() 为止。
然后,从 viewWillAppear() 内部调用 loadRequest()。