xcode - Swift:验证是 OS X Playground 中的有效 url

标签 xcode swift cocoa swift-playground

我正在尝试验证/验证 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"))

非常感谢您的帮助。

最佳答案

有两件事需要检查: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

关于xcode - Swift:验证是 OS X Playground 中的有效 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37126085/

相关文章:

ios - 如何最小化包含大量图像的 Swift 页面的加载时间?

objective-c - 由 NSSlider 控制的 IKImageView 缩放

xcode - 试着绕过展开线? swift 2.0,XCode 7

iphone - iOS 应用程序在线程 0 中崩溃

swift - 如何使用 Swift 在 iOS 8 上显示带有文本的事件指示器?

ios - 从控制台读取行作为 Swift iOS 中 2D 数组的输入

iphone - 在 Cocoa 中使用 NSThreads?

ios - 如何在 Xcode 控制台中漂亮地打印 NSError 对象?

ios - 用Textfield与键盘一起向上移动Uitoolbar

ios - subview 未使用容器的完整 View