【问题标题】:Swift Google search with more than two variables具有两个以上变量的 Swift Google 搜索
【发布时间】:2015-08-18 14:00:34
【问题描述】:

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

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
}

【问题讨论】:

  • 欢迎来到 SO。请在此处发布所有相关信息、错误消息、调用堆栈等。

标签: swift search textfield nsrange


【解决方案1】:

您的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)

n.b.出于示例目的,我强制打开了一些东西。

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

【讨论】:

  • 我已将此更新为 Swift 5 - 如果您可以将其标记为已接受的答案,请@BethKnight,那就太好了:)
【解决方案2】:

Swift 5 更新:

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

这应该可以让您正确打开网址。

【讨论】:

    猜你喜欢
    • 2014-09-13
    • 2021-11-17
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    相关资源
    最近更新 更多