ios - 生成 - URLパラメーターの値を取得します



jquery url パラメータ 書き換え (4)

URL拡張も作成しましたが、クエリパラメーターのルックアップを添え字に入れました。

extension URL {
    subscript(queryParam:String) -> String? {
        guard let url = URLComponents(string: self.absoluteString) else { return nil }
        return url.queryItems?.first(where: { $0.name == queryParam })?.value
    }
}

使用法:

let url = URL(string: "http://some-website.com/documents/127/?referrer=147&mode=open")!

let referrer = url["referrer"]  // "147"
let mode     = url["mode"]      // "open"

https://src-bin.com

Swiftを使用してURLからパラメーターを取得しようとしています。 次のURLがあるとします。

http://mysite3994.com?test1=blah&test2=blahblah

test1とtest2の値を取得するにはどうすればよいですか?


Answer #1

これを行う別の方法は、URLに拡張機能を作成してコンポーネントを返し、[URLQueryItem]に拡張機能を作成してqueryItemsから値を取得することです。

extension URL {
    var components: URLComponents? {
        return URLComponents(url: self, resolvingAgainstBaseURL: false)
    }
}

extension Array where Iterator.Element == URLQueryItem {
    subscript(_ key: String) -> String? {
        return first(where: { $0.name == key })?.value
    }
}

そして、これはこれがどのように使用されるかの例です:

if let urlComponents = URL(string: "http://mysite3994.com?test1=blah&test2=blahblah")?.components,
    let test1Value = urlComponents.queryItems?["test1"] {
    print(test1Value)
}

Answer #2

以下のコードを使用してパラメーターを取得できます

func getQueryStringParameter(url: String, param: String) -> String? {
  guard let url = URLComponents(string: url) else { return nil }
  return url.queryItems?.first(where: { $0.name == param })?.value
}

let test1 = getQueryStringParameter(url, param: "test1") ようなメソッドを呼び出し let test1 = getQueryStringParameter(url, param: "test1")

拡張子を持つ他の方法:

extension URL {
    public var queryParameters: [String: String]? {
        guard
            let components = URLComponents(url: self, resolvingAgainstBaseURL: true),
            let queryItems = components.queryItems else { return nil }
        return queryItems.reduce(into: [String: String]()) { (result, item) in
            result[item.name] = item.value
        }
    }
}

Answer #3

ステップ1: URL拡張機能を作成する

extension URL {
    func valueOf(_ queryParamaterName: String) -> String? {
        guard let url = URLComponents(string: self.absoluteString) else { return nil }
        return url.queryItems?.first(where: { $0.name == queryParamaterName })?.value
    }
}

ステップ2: 拡張機能の使用方法

let newURL = URL(string: "http://mysite3994.com?test1=blah&test2=blahblah")!

newURL.valueOf("test1") // Output i.e "blah"
newURL.valueOf("test2") // Output i.e "blahblah"




swift