Skip to content

Instantly share code, notes, and snippets.

@virasio
Last active August 29, 2015 13:58

Revisions

  1. virasio revised this gist Aug 4, 2014. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion NSURL+Dictionaries.h
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    @interface NSURL (QueryDictionary)
    @interface NSURL (Dictionaries)

    @property (nonatomic, readonly) NSDictionary *queryDictionary;
    @property (nonatomic, readonly) NSDictionary *fragmentDictionary;
  2. virasio revised this gist Aug 4, 2014. 4 changed files with 53 additions and 27 deletions.
    8 changes: 8 additions & 0 deletions NSURL+Dictionaries.h
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    @interface NSURL (QueryDictionary)

    @property (nonatomic, readonly) NSDictionary *queryDictionary;
    @property (nonatomic, readonly) NSDictionary *fragmentDictionary;

    - (NSURL *)URLByAppendingQueryParameters:(NSDictionary *)parameters;

    @end
    45 changes: 45 additions & 0 deletions NSURL+Dictionaries.m
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,45 @@
    #import "NSURL+Dictionaries.h"

    @implementation NSURL (Dictionaries)

    - (NSDictionary *)parseParametersString:(NSString *)parametersString {
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    NSArray *parameters = [parametersString componentsSeparatedByString:@"&"];
    for (NSString *parameter in parameters) {
    NSArray *parts = [parameter componentsSeparatedByString:@"="];
    NSString *key = [[parts objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    if ([parts count] > 1)
    {
    id value = [[parts objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    [dict setObject:value forKey:key];
    }

    }
    return [NSDictionary dictionaryWithDictionary:dict];
    }

    - (NSDictionary *)queryDictionary {
    return [self parseParametersString:self.query];
    }

    - (NSDictionary *)fragmentDictionary {
    return [self parseParametersString:self.fragment];
    }

    - (NSURL *)URLByAppendingQueryParameters:(NSDictionary *)parameters {
    if (!parameters || parameters.count == 0) {
    return [self copy];
    }

    NSMutableString *queryString = [NSMutableString stringWithString:@""];
    for (NSString *key in parameters) {
    [queryString appendString:[NSString stringWithFormat:@"%@%@=%@",
    ([queryString isEmpty] ? @"" : @"&"), key, parameters[key]]];
    }

    NSString *URLString = [[NSString alloc] initWithFormat:@"%@%@%@", [self absoluteString],
    [self query] ? @"&" : @"?", queryString];
    return [NSURL URLWithString:URLString];
    }

    @end
    5 changes: 0 additions & 5 deletions NSURL+QueryDictionary.h
    Original file line number Diff line number Diff line change
    @@ -1,5 +0,0 @@
    @interface NSURL (QueryDictionary)

    - (NSDictionary *)queryDictionary;

    @end
    22 changes: 0 additions & 22 deletions NSURL+QueryDictionary.m
    Original file line number Diff line number Diff line change
    @@ -1,22 +0,0 @@
    #import "NSURL+QueryDictionary.h"

    @implementation NSURL (QueryDictionary)

    - (NSDictionary *)queryDictionary
    {
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    NSArray *parameters = [self.query componentsSeparatedByString:@"&"];
    for (NSString *parameter in parameters) {
    NSArray *parts = [parameter componentsSeparatedByString:@"="];
    NSString *key = [[parts objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    if ([parts count] > 1)
    {
    id value = [[parts objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    [dict setObject:value forKey:key];
    }

    }
    return [NSDictionary dictionaryWithDictionary:dict];
    }

    @end
  3. virasio created this gist Apr 9, 2014.
    5 changes: 5 additions & 0 deletions NSURL+QueryDictionary.h
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,5 @@
    @interface NSURL (QueryDictionary)

    - (NSDictionary *)queryDictionary;

    @end
    22 changes: 22 additions & 0 deletions NSURL+QueryDictionary.m
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,22 @@
    #import "NSURL+QueryDictionary.h"

    @implementation NSURL (QueryDictionary)

    - (NSDictionary *)queryDictionary
    {
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    NSArray *parameters = [self.query componentsSeparatedByString:@"&"];
    for (NSString *parameter in parameters) {
    NSArray *parts = [parameter componentsSeparatedByString:@"="];
    NSString *key = [[parts objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    if ([parts count] > 1)
    {
    id value = [[parts objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    [dict setObject:value forKey:key];
    }

    }
    return [NSDictionary dictionaryWithDictionary:dict];
    }

    @end