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