Кодирование строковых аргументов для 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://other.com&apiKey=ABCDEF когда это должно бытьhttp://api.example.com/articles?version=2.0.1&url=http%3A%2F%2Fother.com&apiKey=ABCDEF.

Мне нужно кодировать как ключ, так и значение. Я искал что-то и нашелCFURLCreateStringByAddingPercentEscapes а такжеstringByAddingPercentEscapesUsingEncoding но ни один из тестов, которые я сделал, не сработал.

Как мне это сделать?

Ответы на вопрос(3)

Ваш ответ на вопрос