4
で不正なURLを作成する方法
私はNSURL
わざわざスウィフト
public extension NSURL {
func getQueryItemValueForKey(key: String) -> String? {
guard let components = NSURLComponents(URL: self, resolvingAgainstBaseURL: false) else {
return nil
}
guard let queryItems = components.queryItems else { return nil }
return queryItems.filter {
$0.name == key
}.first?.value
}
}
私はそれのためのユニットテストを書いていますが、私は、私はいないようだと、100%のコードカバレッジを取得することができませんで、次のスウィフトの拡張子を持っていますNSURLComponents(URL: self, resolvingAgainstBaseURL: false)
をnil
に返すことができるようにする。私が理解しているところでは、これには不正な形式のURLが必要ですが、作成するのに苦労しています。
私が試してみました:私はトラックを失った
let url = NSURL(string: "")
let url = NSURL(string: "http://www.example")
let url = NSURL(string: "http://www.exam ple.com")
let url = NSURL(string: "http://www.example.com/?param1=äëīòú")
そして、いくつか他の人を。私はこれがおそらく明らかに明白な何かであることを知っていますが、私は今は失われています。では、Swiftで不正な形式のURLを作成するにはどうすればよいですか?
問題はということですがこのようにNSURLを作成するとき - let url = NSURL(string: "") - "url"はオプションで、unwrapしようとするとnilが返されます。 url?.getQueryItemValueForKeyを呼び出すと、urlがnilであるため、この呼び出しは実行されません。つまり、不正なURLの場合に呼び出されないため、NSURLComponents(...)がnilを返さないためです。 –
@invisible_handいいえ、 'NSURL(string:" ")'は 'nil'ではなく、有効な' NSURL'インスタンスです。そしてもし* "あなたは[...]" *のためにNSURLComponents(...)がnilを返さない場合、なぜオプションの初期化子として宣言されますか? – luk2302
ハハ、そうです。しかし、私は答えを見つけたようです。 NSURL(文字列: "\\")またはこのNSURLComponents(文字列: "\\") –