比较 NSURL 字符串和简单的 Swift 字符串

Posted

技术标签:

【中文标题】比较 NSURL 字符串和简单的 Swift 字符串【英文标题】:Compare NSURL String and simple Swift String 【发布时间】:2016-08-04 16:17:06 【问题描述】:

我在 Xcode 6.2 中有一个函数,我想比较从 webview 返回的 URL 并将其与静态字符串进行比较。我是这样做的:

  func webViewDidFinishLoad(webView: UIWebView)
        let currentURL = webView.request?.URL
        print("Webview did finish load ")
        println(currentURL)



        if (webView.request?.URL == "Optional(http://addi.star.com/adminpanel/first.php/login)") 
        

        println("voilaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")

        // code for dissming the view
        //self.dismissViewControllerAnimated(true, completion: nil)

        
   

...但它不起作用。有人可以解释我如何将 currentURL 与静态 URL 进行比较,以便我可以关闭视图吗?我想我错过了成功比较它的类型,但必须有办法做到这一点......

【问题讨论】:

如何将硬编码值与 webView.request 进行比较?.URL 为什么要与嵌入了“Optional(”的字符串进行比较,显然是错误的?在制作字符串之前先解开静态 URL 值。//另外,你有具体原因吗?使用 Xcode 6?你应该升级 - Swift 已经发展了很多。 我是 ios 开发和学习事物以及它们如何工作的新手。你能告诉我如何像例子一样正确地做到这一点吗?这样我就可以在学习中继续前进..我使用的系统必然会使用 xcode 6.2。请帮我解决问题 可能会像这样将 url 转换为字符串,并强制打开可选的:if (String(webView.request!.URL) == "addi.star.com/adminpanel/first.php/login") 我在静态字符串中添加了可选,因为 webView.request?.URL 给了我可选(addi.star.com/adminpanel/first.php/login)但我无法进行比较 【参考方案1】:

只比较字符串

if (webView.request?.url?.absoluteString == "http://addi.star.com/adminpanel/first.php/login")
    //code

【讨论】:

该死,但有异常情况。如果您使用链接检测器从字符串中提取链接,它将在 webview 中加载相同内容后返回“google.com” webview.request.absolutestring 将是“google.com”,末尾的额外“/”将导致不匹配【参考方案2】:
 func webViewDidFinishLoad(webView: UIWebView)
            let currentURL = webView.request?.URL
            print("Webview did finish load ")
            println(currentURL)

    if let urlStr = webView?.request?.URL?.absoluteString where urlStr == "http://addi.star.com/adminpanel/first.php/login"
        println("voilaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")

           // code for dissming the view
            //self.dismissViewControllerAnimated(true, completion: nil)

    


        

希望这会对你有所帮助。

【讨论】:

OP 使用 Xcode 6。我认为where 出现在 Swift 2.2 (Xcode 7) 中。

以上是关于比较 NSURL 字符串和简单的 Swift 字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中将 NSURL 转换为字符串

字符串未转换为 NSURL [SWIFT] [重复]

NSURL.URLByAppendingPathComponent() 的 Swift 3 等价物是啥?

Swift3-字符串合字符

Swift和Java关于字符串和字符的比较

IOS NSURL基本操作-备