2016-08-13 24 views
10

Tôi có phiên bản beta xcode mới nhất, chỉ cố gắng tải trang web bên trong ứng dụng."NSURL" không được chuyển đổi hoàn toàn thành "URL"; bạn có ý định sử dụng "như" để chuyển đổi rõ ràng không?

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 line này: let requestObj = NSURLRequest(URL: url!); tôi nhận được lỗi sau:

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

tôi loại bỏ các dấu chấm than và tôi nhận được lỗi này: Các biến thể

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

Tôi đã cố gắng trên mã này từ khắp nơi trên internet trong bốn giờ qua. Tôi nghĩ nhanh nhất mới không cho phép điều này nữa hay gì đó, bởi vì không có gì hiệu quả. Tôi được đặt thành mục tiêu triển khai 10.0 và tương thích với Xcode 8.0. Nhưng tôi cũng đã thử các phiên bản trước đó cho cả hai cài đặt đó và tôi nhận được cùng một lỗi trên tất cả các phiên bản của cả hai.

Vâng, webView của tôi trên bảng phân cảnh được kết nối đúng cách với ViewController.swift.

+1

Trong Swift 3, sử dụng URL và URLRequest (thả tiền tố NS). Xem http://stackoverflow.com/a/37812485/2227743. – Moritz

+1

'NSURL (string:)' trả về tùy chọn, bạn phải mở nó ra. Truyền dưới dạng URL sẽ hoạt động. – Khundragpan

+0

@ K.Nimo OP đã buộc phải mở nó - và tốt hơn hết là nên sử dụng các cấu trúc Swift 3 mới, cho URL * và * cho URLRequest. :) – Moritz

Trả lời

20

Trong 3 nhanh chóng, bạn cần sử dụng URL thay vì NSURL, vì vậy hãy tạo đối tượng url như thế này.

if let url = URL(string: "https://www.google.com") { 
    webView.load(URLRequest(url: url)) 
} 
+4

Hoàn toàn hoạt động. Cảm ơn. để url = URL (chuỗi: "https://www.google.com"); để yêu cầuObj = URLRequest (url: url!); –

+0

tại sao nó được thực hiện theo cách này? Tại sao nó không chỉ chuyển đổi? – Honey

3

Cập nhật cho Swift 3.1:

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

Thông báo việc sử dụng các URL thay vì NSURLload thay vì loadRequest.

Các vấn đề liên quan