Swift谷歌搜索有两个以上的变量

时间:2015-08-18 14:00:35

标签: swift search textfield nsrange

我正在尝试将Google搜索添加到我的文本字段中。我已经得到它所以我可以查找一个或两个变量,但在三个之后崩溃了。我需要更改或添加什么才能使其正常工作?这是我的代码......

func textFieldShouldReturn(textField:UITextField) - >布尔{         textField.resignFirstResponder()

    var urlString: String = textField.text
    var url = NSURL(string: urlString)

    if (url != nil) {
        url = NSURL(string: "http://www.google.com/search?q=\(urlString)")
        var request = NSURLRequest(URL: url!)
        self.webView.loadRequest(request)
    }
     if url?.scheme == nil {
        var spaces = urlString.rangeOfString(" ")
        var urlStrings = urlString.stringByReplacingCharactersInRange(spaces!, withString: "+")
        var url = NSURL(string: "http://www.google.com/search?q=\(urlStrings)")
        var request = NSURLRequest(URL: url!)
        self.webView.loadRequest(request)
    }
    return false
}

2 个答案:

答案 0 :(得分:1)

你的spaces = urlString.rangeOfString(" ")只找到字符串中的第一个空格,所以如果字符串中有更多字符串,那么它只会用+替换第一个空格而不会替换其他空格。你需要使用更多的东西:

urlStrings = urlString.stringByReplacingOccurrencesOfString(" ", withString: "+", options: NSStringCompareOptions.LiteralSearch, range: nil)

在这里,我们将取代" "字符用" +"。总结一下:

var urlString: String = textField.text
urlString = urlString.stringByReplacingOccurrencesOfString(" ", withString: "+", options: NSStringCompareOptions.LiteralSearch, range: nil)
let url = NSURL(string: "http://www.google.com/search?q=\(urlString)")
let request = NSURLRequest(URL: url!)
self.webView.loadRequest(request)

您还要确保首先修剪urlString以删除任何多余的空格(例如,在开头和结尾处使用双倍空格或空格)。请参阅here了解如何操作!

答案 1 :(得分:0)

Swift 5更新:

var keyword = "Rhinoceros Beetles"
keyword = keyword.replacingOccurrences(of: " ", with: "+")

这应该允许您正确打开URL。