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(字符串:尝试)!

+1

你为什么不提供网址?什么是'let attempt = postLink'在做什么?当你在'viewWillAppear'中尝试4行加载代码时,你什么时候得到?分配后的“url”的价值是什么?实现'UIWebViewDelegate',看看事情是进展还是失败。 –

+0

发生了什么是最后的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) 

} 
+0

//如果有任何可选的我们返回,这是什么意思? –

+0

如果在这种情况下'nil' postUrlString或url @MohammadSadiq – Lamar

+0

所以请更改它,如果某事是零。因为它是可选的,我们正在检查的是,无论它是否为 –

错误很简单,postLink,你提供创建网址是不正确的。我的猜测是空的(只是一个猜测),你忘了设置它。

尽量避免在代码中使用强制解包!。 您应该在场景中使用guard letif 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,但它需要从它使用该函数返回。要详细了解ifguard let的使用情况,您可以通过博客帖子here进行浏览。

+0

已经成功的守卫方法,但现在不能让web视图加载任何建议? –