2016-09-26 2 views
0

Это должно быть очень просто, но я понятия не имею, почему этот код не работает. Я пытаюсь загрузить базовый URL в UIWebView, как это:UIWebView сбой при загрузке URL

let string = "www.google.com".stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 
    let url = NSURL(string: string!) 

    if let ur = url { 
     let request = NSURLRequest(URL: ur) 
     webView.loadRequest(request) 
    } 

Однако каждый раз, когда я получаю эту ошибку:

фатальная ошибка: неожиданно нашли ноль в то время как разворачивание необязательное значение

степпинге через него ничего нет nil. Понятно, что я сделал бы это только для того, чтобы убедиться:

let string = "www.google.com".stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 

    // unwrap the string 
    if let str = string { 

     let url = NSURL(string: str) 

     // unwrap the url 
     if let ur = url { 
      let request = NSURLRequest(URL: ur) 
      webView.loadRequest(request) 
     } 
    } 

Который я все еще получаю такой же крах! Если я смотрю на резьбе я получаю это при запуске на устройстве:

0x656d6c <+68>: bl 0x6abac4 ; function signature specialization 1 = Exploded> of Swift.(_fatalErrorMessage (Swift.StaticString, Swift.StaticString, Swift.StaticString, Swift.UInt) ->()).(closure #2)


Так мой UIWebView является nil как-то ... Я все подключили правильно? Любые идеи enter image description here

ответ

0

@penatheboss ответы были правильными, однако я хотел вывесить, как я установил его. Мои IBOutlets были подключены правильно, но мой UIWebView всегда был nil в моем классе. Даже в viewDidAppear.

Как я установил его:

  • Убирал мой проект
  • Довольно Xcode
  • Удаляются производная папка данных
  • Возобновлено проект сборки

Затем он работал отлично с оригиналом код, который я опубликовал. Обсуждение. Около. Раздражает.

1

WebView сам должен быть nil. Если есть пустой круг слева от розетки, подключите его, перетащив его из окна в розетку.

+0

Вы правы, но это действительно странно. У меня все правильно подключено ... я обновил свой вопрос. – random

1

Позвольте мне знать, эта работа для вас?

let string = "https://www.google.com".stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 

В стремительной 3,0

let string = "https://www.google.com".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) 

Чтобы проверить строку как URL:

Строка всегда не нулевой, когда он, по крайней мере один символ. Попробуйте под кодом, чтобы проверить URL-адрес действителен или нет!

//func isvalidURL (_ string: String?) -> Bool { // for swift 3 
func isvalidURL (string: String?) -> Bool { 

    if string != nil 
    { 

     if let url = NSURL(string: string!) 
     { 

      return UIApplication.shared.canOpenURL(url as URL) 
     } 
    } 
    return false 
} 

Использование:

let string = "https://www.google.com".stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 

//if isvalidURL(string) == true //For swift 3 
if isvalidURL(string: string) == true 
    { 
      let url = NSURL(string: string!) 
      let request = NSURLRequest(url: url as! URL) 
      webView.loadRequest(request as URLRequest) 
      print("URL is Valid!") 
    } 
    else 
    { 
      print("Input URL is invalid!") 
    } 

Скриншот:

a.For недопустимый URL:

enter image description here

b.For действительный URL:

enter image description here

+0

Это работает. Я выяснил, что по какой-то нелепой причине мой 'UIWebView' был' nil' в 'viewDidAppear', хотя он был подключен правильно. Я очистил свой проект и удалил полученные данные. После этого код, который я изначально работал. xcode 8> :(Я очень ценю подробный ответ, хотя !! +1 – random

+1

Добро пожаловать друг :) Спасибо за поощрение :) –

Смежные вопросы