2016-05-09 4 views
0

私はURLを確認/検証しようとしていますが、私はいつでもサファリを開きます。あなたは誰もがオープンサファリなしでこれを達成する方法を知っています。ここに私のコードです:Swift:OS Xプレイグラウンドで有効なURLが確認されています

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")) 

本当にありがとうございます。

答えて

0

あなたは、むしろ次のチェック実行する必要があります。

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")) 
0

をチェックするには、2つのものがあります: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) 
} 

、NSURLSessionを使用することができるようにするために、非同期モードを有効にすることを忘れないでください:

import XCPlayground 
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true 
関連する問題