23

UIWebView を使用してカスタム ブラウザーを構築しています。

ユースケース: ユーザーがアドレスバーに「www.abc.com」と入力します。以下のエラーがスローされます:

エラー ドメイン = WebKitErrorDomain コード = 102 "フレームの読み込みが中断されました" UserInfo = 0x19860770 {NSErrorFailingURLKey = file://www.abc.com、NSErrorFailingURLStringKey = file://www.abc.com、NSLocalizedDescription = フレームの読み込みが中断されました}

理由: URL の前に「http://」を追加する必要があります

NSStringのメソッドを使用したいのstringWithFormatですが、正しい構文を取得できないようです。Objective-C には、次のものがあります。

NSString* modifiedURLString = [NSString stringWithFormat:@"http://%@", urlString];

Swiftではメソッドがない!?

var modifiedURLString: String = String(`stringWithFormat not here?!...`)

次に、Objective C と Swift を混ぜてみました。

var modifiedURLString: NSString = [NSStringstringWithFormat not here?!...

次に、まっすぐな Objective-C を試しました。

NSString* modifiedURLString = [NSString stringWithFormat:@"http://", urlString];

ご協力ありがとうございました。敬具 キース

4

3 に答える 3

65

NSString の formatWithString: に相当するものは、以下に示すように単なる「format:」ですが、あなたが示した例では実際にそれを行う必要はありません。文字列を追加するか、補間を使用するだけです...

let urlString = "www.abc.com"
var modifiedURLString = NSString(format:"http://%@", urlString) as String
// or just
modifiedURLString = String(format:"http://%@", urlString)
// or
let simpler = "http://" + urlString
// or use string interplotaion
let simplest = "http://\(urlString)"
于 2014-06-16T15:36:31.953 に答える
17

ここで完全にするために(4番目の方法ですが)、ここにオプションがあります:

1: NSString の stringWithFormat を使用する迅速な方法:

let url = NSString(format: "http://%@", aSuffix)

2: 「+」演算子を使用して文字列を連結する Swift の機能を利用します。

let url = "http://" + aSuffix

3: NSString のstringByAppendingString()メソッドを使用します。

let url = "http://"
url.stringByAppendingString(aSuffix)

4: 文字列補間。

let url = "http://\(aSuffix)"
于 2014-06-16T16:01:55.577 に答える
8

文字列補間を使用できます:

let site = "www.abc.com"
let url = "http://\(site)"
于 2014-06-16T15:35:48.330 に答える