Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在浏览器项目中显示用户google搜索引擎结果_Swift_Uiwebview - Fatal编程技术网

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

Swift 如何在浏览器项目中显示用户google搜索引擎结果,swift,uiwebview,Swift,Uiwebview,我正在用swift为iPhone、iPad实现一个带有UIWebView的浏览器。所有这些都很好,但问题是,当用户键入错误或未完成他们喜爱的网站的URL时,它似乎崩溃了,没有呈现任何内容。所以我想做的是,如果浏览器找不到所请求的页面,那么它会自动在谷歌搜索引擎上搜索这个词,并在浏览器中显示结果。 这是我的代码,如果需要的话。 谢谢你的帮助 func textFieldShouldReturn(_ textField: UITextField) -> Bool { //let u

我正在用swift为iPhone、iPad实现一个带有
UIWebView
的浏览器。所有这些都很好,但问题是,当用户键入错误或未完成他们喜爱的网站的URL时,它似乎崩溃了,没有呈现任何内容。所以我想做的是,如果浏览器找不到所请求的页面,那么它会自动在谷歌搜索引擎上搜索这个词,并在浏览器中显示结果。 这是我的代码,如果需要的话。 谢谢你的帮助

 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
,如果不包含,您可以使用文本设置“”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)
}

非常感谢,看起来很有帮助。但是上面的代码在这些行中有两个错误
guard let urlString=urlTextField.text else{return}。非void函数应返回值
func loadUrl(urlString){.Parameter需要显式类型
。在这些代码中可以帮我吗?@nedaDerakhshesh对不起,我的分心;)我已经编辑了我的答案。@Francesco DeliroThanks@FrancescoDeliro非常感谢。它解决了,工作完全正常。谢谢1000..000times@user2296278也非常感谢您以前的帮助和帮助代码。