Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"NSURL" is not implicitly convertible to "URL"; did you mean to use "as" to explicitly convert?

I have latest xcode beta, just trying to load a webpage inside an app.

import UIKit

class ViewController: UIViewController {

    @IBOutlet var webView: UIWebView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let url = NSURL (string: "https://www.google.com");
        let requestObj = NSURLRequest(URL: url!);
        webView.loadRequest(requestObj);
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

On this line: let requestObj = NSURLRequest(URL: url!); I get following error:

"NSURL" is not implicitly convertible to "URL"; did you mean to use "as" to explicitly convert?

I removed the exclamation mark and I get this error:

Cannot convert value of type "NSURL?" to expected argument type "URL"

I've been trying variations on this code from all over the internet for the past four hours. I'm thinking latest swift just doesn't allow this anymore or something, because nothing works. I'm set to a 10.0 Deployment Target and a Xcode 8.0 compatible. But I've also tried earlier versions for both of those settings and I get the same error across all versions of both.

Yes, my webView on the storyboard is properly connected to the ViewController.swift.

like image 762
Works for a Living Avatar asked Aug 13 '16 10:08

Works for a Living


2 Answers

In swift 3 you need to use URL instead of NSURL, so create url object like this.

if let url = URL(string: "https://www.google.com") {
    webView.load(URLRequest(url: url))
}
like image 134
Nirav D Avatar answered Nov 12 '22 03:11

Nirav D


Update for Swift 3.1:

let url = URL(string: "https://www.google.com")
let request = URLRequest(url: url!)
webView.load(request)

Notice the use of URL instead of NSURL and load instead of loadRequest.

like image 34
Andres Avatar answered Nov 12 '22 02:11

Andres