gpt4 book ai didi

ios - 从 UIWebView 继承添加我自己的委托(delegate)给出 fatal error : Can't unwrap Optional. 无

转载 作者:行者123 更新时间:2023-11-29 02:45:48 25 4
gpt4 key购买 nike

我已经使用 Obj-C 编程几年了,我决定用 Swift 制作我的下一个应用程序以获取经验并学习一些新东西。不用说,我发现一些概念很难理解,例如可选变量。

目前我正在尝试从 UIWebView 继承并将我自己的委托(delegate)添加到我的类中。这是我类(class)的代码:

@objc protocol WebViewWithGesturesDelegate{    
@optional func webViewWithGestures(webViewWithGestures: WebViewWithGestures!, didFailLoadWithError error: NSError!)
}

class WebViewWithGestures: UIWebView, UIWebViewDelegate, UIGestureRecognizerDelegate {
var errorDelegate : WebViewWithGesturesDelegate?

init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
self.delegate = self
}

func webView(webView: UIWebView!, didFailLoadWithError error: NSError!){
errorDelegate?.webViewWithGestures!(self, didFailLoadWithError: error)
}}

然后在我的 ViewController 中我有这个:

class NewsViewController: UIViewController, WebViewWithGesturesDelegate {    
@IBOutlet var webView : WebViewWithGestures!

override func viewDidLoad() {
super.viewDidLoad()
webView!.errorDelegate = self
}}

然而,当我运行代码时,我得到了这个:

'fatal error: Can't unwrap Optional.None'

请帮我解决这个问题并学习新东西。

问候

最佳答案

是编译器错误还是运行时错误?我让它像这样工作(在 Xcode 6 beta 5 上):

网页 View :

@objc protocol WebViewWithGesturesDelegate {
optional func webViewWithGestures(webViewWithGestures: WebViewWithGestures!, didFailLoadWithError error: NSError!)
}

class WebViewWithGestures: UIWebView, UIWebViewDelegate {

var errorDelegate : WebViewWithGesturesDelegate?

required init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
self.delegate = self
}

func webView(webView: UIWebView!, didFailLoadWithError error: NSError!){
errorDelegate?.webViewWithGestures!(self, didFailLoadWithError: error)
}

}

View Controller :

class ViewController: UIViewController, WebViewWithGesturesDelegate {

@IBOutlet var webView : WebViewWithGestures?

override func viewDidLoad() {
super.viewDidLoad()
if let unwrappedWebView = webView {
unwrappedWebView.errorDelegate = self
let request = NSURLRequest(URL: NSURL.URLWithString("Fail"))
unwrappedWebView.loadRequest(request)
} else {
println("No IBOutlet set")
}
}

func webViewWithGestures(webViewWithGestures: WebViewWithGestures!, didFailLoadWithError error: NSError!) {
println("delegateCalled");
}

}

关于ios - 从 UIWebView 继承添加我自己的委托(delegate)给出 fatal error : Can't unwrap Optional. 无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25152068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com