私のためにURLを構築する方法を作成しました。URLのエンコーディング文字列の引数
- (NSString *)urlFor:(NSString *)path arguments:(NSDictionary *)args
{
NSString *format = @"http://api.example.com/%@?version=2.0.1";
NSMutableString *url = [NSMutableString stringWithFormat:format, path];
if ([args isKindOfClass:[NSDictionary class]]) {
for (NSString *key in args) {
[url appendString:[NSString stringWithFormat:@"&%@=%@", key, [args objectForKey:key]]];
}
}
return url;
}
私が以下のようなものを構築しようとすると、もちろんURLはエンコードされません。
NSDictionary *args = [NSDictionary dictionaryWithObjectsAndKeys:
@"http://other.com", @"url",
@"ABCDEF", @"apiKey", nil];
NSLog(@"%@", [self urlFor:@"articles" arguments:args]);`
返される値は、それがhttp://api.example.com/articles?version=2.0.1&url=http%3A%2F%2Fother.com&apiKey=ABCDEFあるべきときhttp://api.example.com/articles?version=2.0.1&url=http://other.com&apiKey=ABCDEFです。
キーと値の両方をエンコードする必要があります。何かを検索したところ、CFURLCreateStringByAddingPercentEscapesとstringByAddingPercentEscapesUsingEncodingが見つかりましたが、私が作ったテストはありませんでした。
私はそれをどのように行うことができますか?
申し訳ありません。私のコードは構文の強調表示を壊してしまい、修正できません!誰でも? –