21

私のコード:

if let url = NSURL(string: "www.google.com") {
    let safariViewController = SFSafariViewController(URL: url)
    safariViewController.view.tintColor = UIColor.primaryOrangeColor()
    presentViewController(safariViewController, animated: true, completion: nil)
}

これは例外を除いて初期化時にのみクラッシュします:

指定された URL には、サポートされていないスキームが含まれています。HTTP および HTTPS URL のみがサポートされています

を使用するurl = NSURL(string: "http://www.google.com")と、すべて問題ありません。私は実際に API から URL を読み込んでいるので、接頭辞がhttp(s)://.

この問題にどう取り組むか?http://常にチェックしてプレフィックスを付ける必要がありますか、それとも回避策がありますか?

4

5 に答える 5

13

オブジェクトを作成する前に、文字列でhttpが使用可能かどうかを確認できます。urlNSUrl

コードの前に次のコードを配置すると、問題が解決します(https同じ方法でも確認できます)

var strUrl : String = "www.google.com"
if strUrl.lowercaseString.hasPrefix("http://")==false{
     strUrl = "http://".stringByAppendingString(strUrl)
}
于 2015-09-30T12:00:50.890 に答える