在展开可选值时意外发现 nil(与从 XML 提要中提取的 URL 相关)
Unexpectedly found nil while unwrapping an Optional value (related to URL pulled from XML feed)
我想这是一个很常见的错误,但是由不同的原因引起的。这就是为什么我非常感谢你对我的帮助。
我正在尝试将 URL 从 XML 提要发送到包含网络视图的 viewcontroller。
这是我在 tableview 控制器中的 segue 代码,其中包括文章标题:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "openPage" {
var indexPath: NSIndexPath = self.tableView.indexPathForSelectedRow()!
let wvc: WebViewController = segue.destinationViewController as WebViewController
var selectedURL: String = feeds[indexPath.row].objectForKey("link") as String
selectedURL = selectedURL.stringByReplacingOccurrencesOfString(" ", withString: "")
selectedURL = selectedURL.stringByReplacingOccurrencesOfString("\n", withString: "")
wvc.selectedLink = selectedURL
println(selectedURL)
}
}
openPage
将我的 tableview 连接到 webview viewcontroller。我打印 selectedURL 并且效果很好。这是 ViewController 的代码,包括 webview:
var selectedLink = ""
@IBOutlet var myWebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
myWebView.loadRequest(NSURLRequest(URL: NSURL(string: selectedLink)!))
}
这个returns错误。我没有看到任何问题,我使用的教程具有准确的代码并且可以正常运行,没有任何问题。 URL 结构也非常好,因为我直接在我的 webview 中尝试了 selectedURL 的打印版本,它有效。我想问题出在 segue 连接上,但无法弄清楚。
提前致谢!
您应该检查 NSURL 是否真的有效 URL。 Chrome 或 Safari 等浏览器确实接受许多 URL,但实际上无效。
所以你应该检查你的 URL 是否有效。否则它将 return nil
你必须检查你的 URL:
let unwrappedUrl: NSURL? = NSURL(string: selectedLink!)
如果这个 return 为 nil 你也可以尝试转义你的字符串:
selectedLink = selectedLink.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
我想这是一个很常见的错误,但是由不同的原因引起的。这就是为什么我非常感谢你对我的帮助。
我正在尝试将 URL 从 XML 提要发送到包含网络视图的 viewcontroller。
这是我在 tableview 控制器中的 segue 代码,其中包括文章标题:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "openPage" {
var indexPath: NSIndexPath = self.tableView.indexPathForSelectedRow()!
let wvc: WebViewController = segue.destinationViewController as WebViewController
var selectedURL: String = feeds[indexPath.row].objectForKey("link") as String
selectedURL = selectedURL.stringByReplacingOccurrencesOfString(" ", withString: "")
selectedURL = selectedURL.stringByReplacingOccurrencesOfString("\n", withString: "")
wvc.selectedLink = selectedURL
println(selectedURL)
}
}
openPage
将我的 tableview 连接到 webview viewcontroller。我打印 selectedURL 并且效果很好。这是 ViewController 的代码,包括 webview:
var selectedLink = ""
@IBOutlet var myWebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
myWebView.loadRequest(NSURLRequest(URL: NSURL(string: selectedLink)!))
}
这个returns错误。我没有看到任何问题,我使用的教程具有准确的代码并且可以正常运行,没有任何问题。 URL 结构也非常好,因为我直接在我的 webview 中尝试了 selectedURL 的打印版本,它有效。我想问题出在 segue 连接上,但无法弄清楚。
提前致谢!
您应该检查 NSURL 是否真的有效 URL。 Chrome 或 Safari 等浏览器确实接受许多 URL,但实际上无效。
所以你应该检查你的 URL 是否有效。否则它将 return nil
你必须检查你的 URL:
let unwrappedUrl: NSURL? = NSURL(string: selectedLink!)
如果这个 return 为 nil 你也可以尝试转义你的字符串:
selectedLink = selectedLink.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!