Latest 1.2.0
License MIT
Platforms ios 6.1, osx 10.8, watchos 2.0, tvos 9.0
Frameworks Foundation

Build Status
Build Status


Just some simple NSURL, NSString and NSDictionary categories to make working with URL queries more pleasant.

  • -[NSURL uq_queryDictionary] extract the URL’s query string as key/value pairs.
  • -[NSURL uq_URLByAppendingQueryDictionary:] append the specified key/value pairs to the URL, with existing query handled. Note that behaviour for overlapping keys/values is undefined.
  • -[NSURL uq_URLByReplacingQueryWithDictionary:] create a copy of the URL with its query component replaced by that specified in the dictionary.
  • -[NSURL uq_URLByRemovingQuery] create a copy of the URL with the query component completely removed.

The parsing components of the above are also available separately as:

  • -[NSString uq_URLQueryDictionary] split a valid query string into key/value pairs.
  • -[NSDictionary uq_URLQueryString] the reverse of above; create a URL query string from an NSDictionary instance.

The methods returning URL instances have withSortedKeys: partner methods that sort the dictionary’s keys alphabetically with YES. This is so as to make the generated URL’s string deterministic, with is necessary if you’re unit testing URLs created using these methods – at least this was helpful for me!

Queries with empty values are converted to NSNull and vice versa as of v0.0.5.

Version history


  • Adds support for WatchOS targets. Thanks to Stedman Wilson and Orta.
  • Necessary project updates


  • Now has methods to create URL copies with the query removed, or replaced with a specified query dictionary.


Bug fixes courtesy of Jan Berkel, Elliot Chance and Grzegorz Nowicki. 1, 2, 3.



Fixed a potential issue/static analyser false positive with thanks to Adam Lickel.


Added optional flag to sort the dictionary’s keys alphabetically when generating the URL. This makes the generated URLs more deterministic, which helps (for example) if you are running unit tests to inspect your URLs and would like to test the absolute string, rather than having to recreate a query dictionary.


Covered an additional empty value case – URL query component has separator, but empty value.


Added handling for keys with no value, empty value or NSNull.


Split the query string parsing components out into NSString and NSDictionary categories for additional flexibility.


Added support for dictionary keys other than NSString. Currently just uses -description, but this is ok for NSNumber and NSDate and a few others, so may be sufficient.


Initial release.

Have fun!

MIT Licensed >> [email protected]

Latest podspec

    "name": "NSURL+QueryDictionary",
    "version": "1.2.0",
    "summary": "Make working with NSURL queries more pleasant.",
    "description": "NSURL, NSString and NSDictionary categories for working with URL queries",
    "homepage": "",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    "authors": {
        "Jonathan Crooke": "[email protected]"
    "source": {
        "git": "",
        "tag": "v1.2.0"
    "platforms": {
        "ios": "6.1",
        "osx": "10.8",
        "watchos": "2.0",
        "tvos": "9.0"
    "source_files": "NSURL+QueryDictionary/*.{h,m}",
    "frameworks": "Foundation"

Pin It on Pinterest

Share This