如何在浏览器项目中显示用户 google 搜索引擎结果

how to show user google search engine result in a browser project

我正在为 iPhone、iPad 实现 UIWebView 和 swift 的浏览器。一切正常,但问题是当用户输入错误或未完成他们最喜欢的网站的 URL 时,它似乎崩溃并且不呈现任何内容。所以如果浏览器找不到请求的页面,我想以某种方式做,然后它会自动在 google 搜索引擎上搜索确切的词并在浏览器中显示结果。 如果需要,这是我这部分的代码。 感谢任何帮助

 func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    //let urlString:String = urlTextField.text!
    var urlString: String = urlTextField.text!

    if !urlString.starts(with: "http://") && !urlString.starts(with: "https://") {
        urlString = "http://\(urlString)"
    }

    let url:URL = URL(string: urlString)!
    let urlRequest:URLRequest = URLRequest(url: url)
    webView.load(urlRequest)

    textField.resignFirstResponder()

    let path: String = url.path
    let ext: String = URL(fileURLWithPath: path ).pathExtension
    print(ext as Any)

    return true

} 

您可以添加检查以验证您的 url 字符串是否包含 www,如果不包含,您可以使用文本设置“https://www.google.com/search?q=”url:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    guard let urlString = urlTextField.text else { return true }

    if urlString.starts(with: "http://") || urlString.starts(with: "https://") {
        loadUrl(urlString)
    } else if urlString.contains(“www”) {
        loadUrl("http://\(urlString)")   
    } else { 
        searchTextOnGoogle(urlString)
    }

    textField.resignFirstResponder()
    //...

    return true
} 

func loadUrl(_ urlString: String) {
    guard let url = URL(string: urlString) else { return }

    let urlRequest = URLRequest(url: url) 
    webView.load(urlRequest)
}

func searchTextOnGoogle(_ text: String) {
    // check if text contains more then one word separated by space 
    let textComponents = text.components(separatedBy: " ") 

    // we replace space with plus to validate the string for the search url
    let searchString = textComponents.joined(separator: "+") 

    guard let url = URL(string: "https://www.google.com/search?q=" + searchString) else { return }

    let urlRequest = URLRequest(url: url) 
    webView.load(urlRequest)
}