노블의 개발이야기

[iOS] NSString에 URL Encoding과 URL Decoding 메소드 추가하기 본문

iOS

[iOS] NSString에 URL Encoding과 URL Decoding 메소드 추가하기

더플러스 2015. 4. 20. 15:32

[iOS] NSString에 URL Encoding과 URL Decoding 메소드 추가하기


http 전송에서 GET으로 보내는 파라미터에 URLEncoding을 해야하는 경우가 있다.

예를 들어 트위터 검색에서 검색어를 사용할 때 @saltfactory를 검색하고 싶으면 from:saltfactory라고 검색하면 되는데 이때 ":" 문자를 URL Encoding으로 보내줘야 한다.


http://search.twitter.com/search.json?q=from%3Asaltfactory


이때 그냥 한글이나 특수 문자를 보내면 데이터가 바르게 전달되지 않는다. 그래서 URLEncoding을 해서 전송해야하는데 NSString 자체에는 URLEncoding 메소드가 존재하지 않는다.

그래서 카테고리를 이용해서 NSString에 stringByUrlEncoding과 stringByUrlDecoding을 추가해서 사용하면 편리하다.


@implementation NSString (url)

-(NSString *)stringByUrlEncoding {

    return [(NSString*)CFURLCreateStringByAddingPercentEscapes(

                                            kCFAllocatorDefault,

                                            (CFStringRef)self,

                                            NULL,

                                            CFSTR(":/?#[]@!$&’()*+,;="),

                                            kCFStringEncodingUTF8) autorelease];

}


-(NSString *)stringByUrlDecoding {

    return [self stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

}

@end


ARC 적용

@implementation NSString (url)

-(NSString *)stringByUrlEncoding {

    return (__bridge_transfer NSString*)CFURLCreateStringByAddingPercentEscapes(

                                                    kCFAllocatorDefault,

                                                    (__bridge CFStringRef)self,

                                                    NULL,

                                                    CFSTR(":/?#[]@!$&’()*+,;="),

                                                    kCFStringEncodingUTF8);

}


-(NSString *)stringByUrlDecoding {

    return [self stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

}

@end


사용법


NSString *searchUrl = @"http://search.twitter.com/search.json?q=from:saltfactory";

searchUrl = [searchUrl stringByUrlEncoding];


'iOS' 카테고리의 다른 글

[iOS] GCD(Grand Central Dispatch) 사용하기  (0) 2015.04.23
[IOS] ARC - Toll-Free Bridging  (348) 2015.04.23
[iOS] 네트워크 상태 체크  (0) 2015.04.23
[iOS] NSUserDefaults  (0) 2015.04.17
[iOS] KeyChain  (0) 2015.04.16
Comments