Skip to content

Instantly share code, notes, and snippets.

@zbowling
Created April 29, 2011 06:14
Show Gist options
  • Save zbowling/947929 to your computer and use it in GitHub Desktop.
Save zbowling/947929 to your computer and use it in GitHub Desktop.
//
// NSString+MWExtras.h
// MagicWall
//
// Created by Zac Bowling on 2/5/11.
// Copyright 2011 i'mhello. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSString (NSString_MWExtras)
- (NSDictionary*)queryDictionary;
- (NSDictionary*)queryDictionaryUsingEncoding:(NSStringEncoding)encoding;
/*-(BOOL)stringBeginsWithString:(NSString*)string;*/
@end
//
// NSString+MWExtras.m
// MagicWall
//
// Created by Zac Bowling on 2/5/11.
// Copyright 2011 i'mhello. All rights reserved.
//
#import "NSString+MWExtras.h"
@implementation NSString (NSString_MWExtras)
- (NSDictionary*) queryDictionary {
return [self queryDictionaryUsingEncoding:NSUTF8StringEncoding];
}
- (NSDictionary*)queryDictionaryUsingEncoding:(NSStringEncoding)encoding {
NSCharacterSet* delimiterSet = [NSCharacterSet characterSetWithCharactersInString:@"&;"];
NSMutableDictionary* pairs = [NSMutableDictionary dictionary];
NSScanner* scanner = [[[NSScanner alloc] initWithString:self] autorelease];
while (![scanner isAtEnd]) {
NSString* pairString = nil;
[scanner scanUpToCharactersFromSet:delimiterSet intoString:&pairString];
[scanner scanCharactersFromSet:delimiterSet intoString:NULL];
NSArray* kvPair = [pairString componentsSeparatedByString:@"="];
if (kvPair.count == 2) {
NSString* key = [[kvPair objectAtIndex:0]
stringByReplacingPercentEscapesUsingEncoding:encoding];
NSString* value = [[kvPair objectAtIndex:1]
stringByReplacingPercentEscapesUsingEncoding:encoding];
[pairs setObject:value forKey:key];
}
}
return [NSDictionary dictionaryWithDictionary:pairs];
}
/*-(BOOL)stringBeginsWithString:(NSString*)string {
if (string == nil) return NO;
if ([string length] > [self length]) return NO;
return (NSOrderedSame == [self compare:string options:NSAnchoredSearch range:NSMakeRange(0,[string length])]);
}*/
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment