致命错误:在展开Optional值时意外发现nil(无法强制解包非可选类型'String'的值)

时间:2016-01-17 01:46:40

标签: ios string swift

我正在尝试将预先附加的字符串作为网址请求传递,并且我不断收到错误:fatal error: unexpectedly found nil while unwrapping an Optional value

此错误指向行:let searchTerm = "http://google.com/#q="+textField.text!

ViewController.swift

func textFieldDidUpdate(textField: UITextField) {

    if (textField.text!.rangeOfCharacterFromSet(NSCharacterSet.whitespaceCharacterSet()) != nil) {
        self.webView.hidden = false
        let searchTerm = "http://google.com/#q="+textField.text!
        let request = NSURLRequest(URL: NSURL(string: searchTerm)!)
        self.webView.loadRequest(request)
    }
}

1 个答案:

答案 0 :(得分:5)

您应该将方法参数名称更改为func textFieldDidUpdate(sender: UITextField),使用guard来解包您的可选textfield文本属性,并使用查询允许的字符集将%escapes也添加到您的字符串中。

func textFieldDidUpdate(sender: UITextField) {
    guard
        let text = sender.text,
        query = text.stringByAddingPercentEncodingWithAllowedCharacters(.URLQueryAllowedCharacterSet()),
        url = NSURL(string: "https://google.com/#q=\(query)")
    else { return }
    webView.hidden = false
    webView.loadRequest(NSURLRequest(URL: url))
}