Быстрый поиск Google с более чем двумя переменными

Я пытаюсь добавить поиск Google в свое текстовое поле. У меня есть, так что я могу найти одну или две переменные, но после трех он падает. Что мне нужно изменить или добавить, чтобы заставить его работать? Вот мой код...

func textFieldShouldReturn (textField: UITextField) -> Bool { 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
}

person Beth Knight    schedule 18.08.2015    source источник
comment
Добро пожаловать в СО. Пожалуйста, размещайте здесь всю необходимую информацию, сообщения об ошибках, стеки вызовов и т. д.   -  person Uwe Allner    schedule 18.08.2015


Ответы (2)


Ваш spaces = urlString.rangeOfString(" ") находит только первый пробел в строке, поэтому со строкой, в которой больше, он заменит только первый пробел на + и ни один из других. Вам нужно использовать что-то большее, например:

urlString = urlString.replacingOccurrences(of: " ", with: "+")

Здесь мы заменяем каждое появление символа " " на "+". Итак, резюмируя:

var urlString: String = textField.text!
urlString = urlString.replacingOccurrences(of: " ", with: "+")
let url = URL(string: "http://www.google.com/search?q=\(urlString)")
let request = URLRequest(url: url!)
webView.load(request)

н.б. Я принудительно развернул некоторые вещи только для примера.

Вы также должны сначала обрезать urlString, чтобы удалить все лишние пробелы (например, двойные пробелы или пробелы в начале и в конце). Подробнее о том, как сделай это!

person Matt Le Fleur    schedule 18.08.2015
comment
Я обновил это до Swift 5 - если вы можете отметить это как принятый ответ, пожалуйста, @BethKnight, это было бы здорово :) - person Matt Le Fleur; 18.11.2019

Обновление для Swift 5:

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

Это должно позволить вам правильно открыть URL-адрес.

person Legolas Wang    schedule 16.11.2019