2014-10-20 41 views

回答

9

在NSURL类中存在.query属性,它返回字符串后的所有内容?在形式的网址:在这个例子中 http://www.example.com/index.php?key1=value1&key2=value2 使用的代码:

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

更多信息在documentation

至于从UIWebView中获得的URL,你可以使用的线沿线的东西:

let url: NSURL = someWebView.NSURLRequest.URL 
+1

有没有一种简单的方法,然后选择'key1'或'key2'价值? – tylerSF 2016-02-27 19:07:38

+1

我想我可以做'let params = url.query;让splitParams = params!.componentsSeparatedByString(“=”)' – tylerSF 2016-02-27 19:21:31

2

为了使它有点更容易得到你所期望的特定参数的值,你可以使用URLComponents这将解析出查询字符串PARAMET你的。

例如,如果我们想查询字符串参数key2在这个URL值:

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

我们可以创建一个URLComponents结构,然后筛选查询项目与第一个匹配,并打印其值:

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 ?? "") 
} 

关键(!)事情是urlComponents.queryItems为我们返回了这个QueryItem结构数组,这为我们提供了一种更简单的方法来过滤参数并获取我们要查找的参数的值。

▿ 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" 
0

我们可以解析网址参数用这种方法,

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 
相关问题