Obteniendo parameters de cadena de consulta desde url en el UIWebView en Swift?

mi pregunta es bastante simple. ¿Alguien puede mostrarme cómo get los parameters de cadena de consulta en una URL recibida por UIWebView. Es bastante fácil en el objective c, pero necesito ayuda rápidamente porque soy nuevo en el idioma. Gracias por adelantado.

En la class NSURL existe la propiedad .query que devuelve la cadena de todo después de la? en la url en forma: http://www.example.com/index.php?key1=value1&key2=value2 en este ejemplo usando el código:

 var url: NSURL = NSURL(string: "http://www.example.com/index.php?key1=value1&key2=value2") println(url.query) // Prints: Optional("key1=value1&key2=value2") 

Más información en la documentation

En cuanto a get la url desde la vista de uiweb, podría usar algo similar a:

 let url: NSURL = someWebView.NSURLRequest.URL 

Para que sea un poco más fácil get el valor de un parámetro particular que espera, puede usar los URLComponents que analizarán los parameters de la cadena de consulta para usted.

Por ejemplo, si queremos el valor de la key2 parámetro de cadena de consulta en esta URL:

" https://www.example.com/path/to/resource?key1=value1&key2=value2 "

Podemos crear una estructura URLComponents, luego filtrar el elemento de consulta que coincida con el nombre, tomar el primero e imprimir su valor:

 let url = URL(string: "https://www.example.com/path/to/resource?key1=value1&key2=value2") if let url = url, let urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false) { let parameterWeWant = urlComponents.queryItems?.filter({ $0.name == "key2" }).first print(parameterWeWant?.value ?? "") } 

La key (!) Es que urlComponents.queryItems nos devuelve este set de estructuras de QueryItem , lo que nos proporciona una manera más fácil de filtrar los parameters y get el valor del parámetro que estamos buscando.

 ▿ Optional([key1=value1, key2=value2]) ▿ some: 2 elements ▿ key1=value1 - name: "key1" ▿ value: Optional("value1") - some: "value1" ▿ key2=value2 - name: "key2" ▿ value: Optional("value2") - some: "value2" 

Podemos analizar los parameters de Url con este método,

 func getParameterFrom(url: String, param: String) -> String? { guard let url = URLComponents(string: url) else { return nil } return url.queryItems?.first(where: { $0.name == param })?.value } let url = "http://www.example.com/index.php?key1=value1&key2=value2" let key1 = self.getParameterFrom(url: url, param: "key1") print("\(key1)") // value1