我想我迅速的iOS应用程序来调用自定义网址的查询功能。 我有一个这样的URL myApp://q=string
。 我想启动我的应用程序,调用一个函数string
。 我已经注册在Xcode的url和我的应用程序通过键入启动myApp://
在Safari浏览器的地址栏中。 这是我到目前为止在我AppDelegate.swift:
func application(application: UIApplication!, openURL url: NSURL!, sourceApplication: String!, annotation: AnyObject!) -> Bool {
return true
}
如何获取查询string
,所以我可以调用myfunction(string)
?
您的网址
myApp://q=string
不符合RFC 1808“相对统一资源定位器” 。 一个URL的一般形式是
<scheme>://<net_loc>/<path>;<params>?<query>#<fragment>
而你的情况是
myApp://?q=string
其中问号开始的URL的查询部分。 与 URL,你可以使用NSURLComponents
类各部分提取物,比如查询字符串和它的项目:
if let urlComponents = NSURLComponents(URL: url, resolvingAgainstBaseURL: false) {
if let queryItems = urlComponents.queryItems as? [NSURLQueryItem]{
for queryItem in queryItems {
if queryItem.name == "q" {
if let value = queryItem.value {
myfunction(value)
break
}
}
}
}
}
该NSURLComponents
类是用于iOS 8.0及更高版本。
注:在您简单的URL的情况下,你可以提取直接使用简单的字符串方法查询参数的值:
if let string = url.absoluteString {
if let range = string.rangeOfString("q=") {
let value = string[range.endIndex ..< string.endIndex]
myFunction(value)
}
}
但是,使用NSURLComponents
是容易出错少,如果你决定在以后添加更多的查询参数更加灵活。
文章来源: How to use UIApplication and openURL and call a swift function on “string” from foo://q=string?