2017-07-28 37 views
0

真的不能算出這個,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有一些額外的空白和行,謝謝你的幫助。 –

回答

0

我猜你是從另一個控制器經過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

所以請更改它,如果某事是零。因爲它是可選的,我們正在檢查的是,無論它是否爲 –

2

錯誤很簡單,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視圖加載任何建議? –