【问题标题】:Swift: Verifying is valid url in OS X playgroundSwift:验证是 OS X 游乐场中的有效 url
【发布时间】:2016-05-09 21:55:15
【问题描述】:

我正在尝试验证/验证 url,但是当我这样做时,它总是会打开 safari。你们中的任何人都知道如何在没有开放 safari 的情况下实现这一目标。这是我的代码:

func validateUrl (urlString: String?) -> Bool {

    let url:NSURL = NSURL(string: urlString!)!

    if NSWorkspace.sharedWorkspace().openURL(url) {
        return true
    }
    return false
}

print (validateUrl("http://google.com"))

非常感谢您的帮助。

【问题讨论】:

    标签: xcode swift cocoa swift-playground


    【解决方案1】:

    有两件事要检查:URL 本身是否有效,以及服务器是否响应没有错误。

    在我的示例中,我使用的是 HEAD 请求,它避免了下载整个页面并且几乎不占用带宽。

    func verifyURL(urlPath: String, completion: (isValid: Bool)->()) {
        if let url = NSURL(string: urlPath) {
            let request = NSMutableURLRequest(URL: url)
            request.HTTPMethod = "HEAD"
            let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (_, response, error) in
                if let httpResponse = response as? NSHTTPURLResponse where error == nil && httpResponse.statusCode == 200 {
                    completion(isValid: true)
                } else {
                    completion(isValid: false)
                }
            }
            task.resume()
        } else {
            completion(isValid: false)
        }
    }
    

    用法:

    verifyURL("http://google.com") { (isValid) in
        print(isValid)
    }
    

    在 Playground 中使用,不要忘记启用异步模式以便能够使用 NSURLSession:

    import XCPlayground
    XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
    

    【讨论】:

      【解决方案2】:

      您需要进行以下检查:

      func validateUrl (urlString: String?) -> Bool {
      
          let url: NSURL? = NSURL(string: urlString!)
      
          if url != nil {
              return true
          }
          return false
      }
      
      print (validateUrl("http://google.com"))
      print (validateUrl("http:/ /google.com"))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-20
        相关资源
        最近更新 更多