2014-10-20 76 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 
相關問題