如何验证网址?

时间:2016-01-27 22:27:24

标签: swift

我尝试使用NSURL验证网址,但它对我不起作用。

实施例

func verifyUrl (urlString: String?) -> Bool {
    if let urlString = urlString {
        if let _  = NSURL(string: urlString) {
            return true
        }
    }
    return false
}


let ex1 = "http://google.com"
let ex2 = "http://stackoverflow.com"
let ex3 = "Escolas" // Not a valid url, I think

verifyUrl(ex1) // true
verifyUrl(ex2) // true
verifyUrl(ex3) // true

我认为" Escolas"不能回复,我做错了什么?

2 个答案:

答案 0 :(得分:8)

我认为您缺少的是打开包含UIApplication.sharedApplication().canOpenURL(url)的网址,例如,将您的代码更改为此代码:

func verifyUrl (urlString: String?) -> Bool {
   if let urlString = urlString {
       if let url  = NSURL(string: urlString) {
           return UIApplication.sharedApplication().canOpenURL(url)
       }
   }
   return false
}
verifyUrl("escola") // false
verifyUrl("http://wwww.google.com") // true

根据AppleNSURL的构造函数未按您的意愿验证网址:

  

此方法希望URLString仅包含正确格式化的URL中允许的字符。所有其他字符必须正确转义百分比。任何百分比转义字符都使用UTF-8编码解释

我希望这对你有所帮助。

答案 1 :(得分:0)

[Swift 3.0]

非常相似,但我在String上使用了一个扩展来实现相同的结果。

extension String {

    func isValidURL() -> Bool {

        if let url = URL(string: self) {

            return UIApplication.shared.canOpenURL(url)
        }

    return false 
    }
}