比较 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 字符串的主要内容,如果未能解决你的问题,请参考以下文章