내가 값에 아이폰 응용 프로그램 개방에 대한 사용자 정의 URL을 분할하고자하는 값, 내 방식이 될 것 같은 뭔가 :가장 좋은 방법은
appname://user=jonsmith&message=blah%20blah
내가되고 싶은 경우 두 개의 NSString으로 "사용자"와 "메시지"를 얻을 수 있습니다. 최선의 접근에 대한 조언이 있습니까?
내가 값에 아이폰 응용 프로그램 개방에 대한 사용자 정의 URL을 분할하고자하는 값, 내 방식이 될 것 같은 뭔가 :가장 좋은 방법은
appname://user=jonsmith&message=blah%20blah
내가되고 싶은 경우 두 개의 NSString으로 "사용자"와 "메시지"를 얻을 수 있습니다. 최선의 접근에 대한 조언이 있습니까?
NSURL
객체에 url
라는 당신의 URL 가정 : KennyTM는 지적
NSMutableDictionary *queryParams = [[NSMutableDictionary alloc] init];
NSArray *components = [[url query] componentsSeparatedByString:@"&"];
for (NSString *component in components) {
NSArray *pair = [component componentsSeparatedByString:@"="];
[queryParams setObject:[[pair objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding: NSMacOSRomanStringEncoding]
forKey:[pair objectAtIndex:0]];
}
...
[queryParams release];
+1 이것이 내가하는 방법이다. –
URL은'appname : // user = jonsmith & message = blah % 20blah'가 아니라 'appname : // user = jonsmith & message = blah % 20blah'이므로 작동하지 않습니다. (나는 후자가 더 나은 선택임을 동의합니다.) – kennytm
감사합니다, 이것은 가장 낮은 비용처럼 보입니다 - % 20 등을 인코딩하는 URL을 되돌릴 수있는 빠른 방법이 있습니까? – mootymoots
NSString* yourString = @"appname://user=jonsmith&message=blah%20blah";
NSString* queryString = [yourString substringFromIndex:strlen("appname://")];
NSArray* queryArray = [queryString componentsSeparatedByString:@"&"];
NSMutableDictionary* queryDict = [NSMutableDictionary dictionary];
for (NSString* query in queryArray) {
NSUInteger indexOfEqualsSign = [query rangeOfString:@"="].location;
if (indexOfEqualsSign != NSNotFound) {
NSString* key = [[query substringToIndex:indexOfEqualsSign] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* value = [[query substringFromIndex:indexOfEqualsSign+1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[queryDict setObject:value forKey:key];
}
}
return queryDict;
더 많은 메모리를 절약해야하는 경우 NSScanner
을 사용하십시오.
사용 구글의 gtm_dictionaryWithHttpArgumentsString
있는 NSDictionary 카테고리가
필자는이 파일의 명명 스타일을 싫어하지만 그렇지 않은 경우 매우 잘 수행됩니다. 링크 주셔서 감사합니다! – miho
, 일에 대한 내 대답을 위해, 당신이 필요로하는 것 물음표를 추가하십시오. appname : ///? user = jonsmith & message = blah % 20blah –
문제 없음 - 더 쉬워진다. – mootymoots