【发布时间】:2016-12-20 06:55:45
【问题描述】:
我有最新的 xcode 测试版,只是想在应用程序中加载网页。
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.
}
}
在这条线上:let requestObj = NSURLRequest(URL: url!);
我收到以下错误:
“NSURL”不能隐式转换为“URL”;您的意思是使用“as”来显式转换吗?
我删除了感叹号并收到此错误:
无法转换“NSURL”类型的值?到预期的参数类型“URL”
在过去的四个小时里,我一直在尝试从整个 Internet 上更改此代码。我在想最新的 swift 不再允许这样做或其他什么,因为没有任何效果。我设置为 10.0 部署目标和 Xcode 8.0 兼容。但是我也为这两种设置尝试了早期版本,并且在这两种设置的所有版本中都出现了相同的错误。
是的,我在故事板上的 webView 已正确连接到 ViewController.swift。
【问题讨论】:
-
在 Swift 3 中,使用 URL 和 URLRequest(去掉 NS 前缀)。见stackoverflow.com/a/37812485/2227743。
-
NSURL (string:)返回一个 Optional,你必须打开它。投射为 URL 将起作用。 -
@K.Nimo OP 已经强制解包 - 无论如何,对于 URL 和 对于 URLRequest,最好使用新的 Swift 3 结构。 :)
-
"Edit > Convert > To Current Swift Syntax ..." 为您自动修复了这个问题(我刚刚验证过)。你至少可以在提问之前尝试一下。
-
不,它没有。在问这个问题之前我很容易尝试过,但它并没有为我解决这个问题。当我尝试这样做时,它实际上会产生构建错误。另外,你为什么假设每个在这里提问的人(像我一样的菜鸟)甚至都知道这个功能?表现出一些礼仪。我在这里的另一个问题中发现了它,它没有修复我的代码,并且产生了更多的构建错误。然后我放弃了,问了这个问题。