티스토리 뷰

반응형

callback URL 데이터를 가져다 쓸 경우 데이터를 뽑아야 하는데

한글이 있을 경우 NSURLComponents가 nil 로 떨어지는 이슈가 존재한다.

예외처리한 코드까지 추가하였다.

문자열에 %가 포함되어 있을 경우 parserURL = [문자열 stringByRemovingPercentEncoding] 처리후 사용하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    NSString *parserURL = @"https://www.test.co.kr?product=test상품ABC&price=30000";
    
    NSURLComponents *components = [NSURLComponents componentsWithString:parserURL];
 
    if (components != nil) {
        for (NSURLQueryItem *item in components.queryItems) {
 
            if ([item.name isEqualToString:@"product"]) {
                product = item.value;
            }
            if([item.name isEqualToString:@"price"]) {
                price = item.value;
            }
        }
    }else{
        NSArray *dataAry = [parserURL componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"?"]];
        NSArray *paramsAry = [[dataAry objectAtIndex:1] componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"&"]];
        
        NSMutableDictionary *tDic = [NSMutableDictionary dictionary];
        
        for (int i =0; i<[paramsAry count]; i++) {
            dataAry = [[paramsAry objectAtIndex:i] componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"="]];
            [tDic setObject:[dataAry objectAtIndex:1] forKey:[dataAry objectAtIndex:0]];
        }
        
        product = [tDic valueForKey:@"product"];
        price = [tDic valueForKey:@"price"];
    }
cs

 

반응형
댓글
반응형