let url = URL(string:item)!快速返回零
真的不能算出这个,URL打印并不等于nil
,它在我粘贴时在浏览器中工作。任何想法?let url = URL(string:item)!快速返回零
import UIKit
class WebViewController: UIViewController {
var postLink: String = String()
@IBOutlet weak var mywebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
print(postLink)
let attempt = postLink
let url: URL = URL(string: attempt)!
let request: URLRequest = URLRequest(url: url)
mywebView.loadRequest(request)
}
错误发生在:
让网址:URL = URL(字符串:尝试)!
我猜你是从另一个控制器经过urlString,做到这一点,而不是
var postUrlString:String? //<-- make it optional
override func viewDidLoad() {
super.viewDidLoad()
guard let urlString = postUrlString, // forced unwrapped
let url = URL(string: urlString)
else { return } // if there is any optional we return
// else continue
let request: URLRequest = URLRequest(url: url)
mywebView.loadRequest(request)
}
//如果有任何可选的我们返回,这是什么意思? –
如果在这种情况下'nil' postUrlString或url @MohammadSadiq – Lamar
所以请更改它,如果某事是零。因为它是可选的,我们正在检查的是,无论它是否为 –
错误很简单,postLink
,你提供创建网址是不正确的。我的猜测是空的(只是一个猜测),你忘了设置它。
尽量避免在代码中使用强制解包!
。 您应该在场景中使用guard let
或if let
。 就你的情况而言,当你无法加载时,你可能想向用户显示一些错误。取而代之的
let url: URL = URL(string: attempt)!
使用
if let url = URL(string: attempt) {
let request = URLRequest(url: url)
mywebView.loadRequest(request)
} else {
// Do something like. Show an alert that could not load webpage etc.
}
或者您可以使用guard let
,但它需要从它使用该函数返回。要详细了解if
和guard let
的使用情况,您可以通过博客帖子here进行浏览。
已经成功的守卫方法,但现在不能让web视图加载任何建议? –
你为什么不提供网址?什么是'let attempt = postLink'在做什么?当你在'viewWillAppear'中尝试4行加载代码时,你什么时候得到?分配后的“url”的价值是什么?实现'UIWebViewDelegate',看看事情是进展还是失败。 –
发生了什么是最后的url有一些额外的空白和行,谢谢你的帮助。 –