LoginSignup
46
46

More than 5 years have passed since last update.

URLのパラメータ部分を NSDictionary に変換する

Last updated at Posted at 2013-02-28

URLのパラメータ部分を NSDictionary に変換したい場合って良くありますよね。ruby で言う CGI::parse みたいなの。ちょっと必要になったので、NSURL クラスをカテゴリで拡張してみました。

NSURL+dictionaryFromQueryString.h
#import <Foundation/Foundation.h>

@interface NSURL (dictionaryFromQueryString)
-(NSDictionary *) dictionaryFromQueryString;
@end

NSURL+dictionaryFromQueryString.m
#import "NSURL+dictionaryFromQueryString.h"

@implementation NSURL (dictionaryFromQueryString)
-(NSDictionary *) dictionaryFromQueryString{

    NSString *query = [self query];
    NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:0];
    NSArray *pairs = [query componentsSeparatedByString:@"&"];

    for (NSString *pair in pairs) {
        NSArray *elements = [pair componentsSeparatedByString:@"="];
        NSString *key = [[elements objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSString *val = [[elements objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        [dict setObject:val forKey:key];
    }
    return dict;
}
@end

NSURL ではなく NSString にカテゴリ追加してもいいかもしれませんね。

46
46
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
46