Установка NSURL с% @, делающей значение равным% @ вместо вставки% @ - PullRequest
2 голосов
/ 16 января 2010

Я использую ASIHTTP и пытаюсь выполнить запрос GET для сайта:

NSURL *url = [[NSURL URLWithString:@"/verifyuser.aspx?user=%@" relativeToURL:@"http://domain.com"],userName  retain];       
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setTemporaryFileDownloadPath:@"myfile2.txt"];
[request setDownloadDestinationPath:@"myfile.txt"];

[request startSynchronous];

Однако, когда я ставлю точку останова на [request startSynchronous] и захожу в отладчик, значение url объекта запроса равно переменной userName. Я пытаюсь вставить переменную userName в строку, а затем использовать ее в качестве URL, поэтому что-то не так в моем объявлении NSURL.

Спасибо за вашу помощь!

Ответы [ 2 ]

9 голосов
/ 16 января 2010

Ваш код неверен, вы неправильно выполняете форматирование строки, это должно выглядеть так:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"/verifyuser.aspx?user=%@", userName] relativeToURL:@"http://domain.com"];

Обратите внимание, что вам не нужно сохранять URL, так как вы просто передаете его в запрос.

0 голосов
/ 16 января 2010

Этот метод NSURL не ожидает строку формата. Компилятор Objective-C делает довольно слабые предположения о том, что ожидает метод, что может стать источником вашей путаницы.

Вместо этого используйте [NSString stringWithFormat:@"..."].

В настоящее время используемый вами синтаксис преобразуется в NSURL* url = [(NSURL* object), userName retain];, что, как вы можете догадаться, недопустимо. На самом деле, мне действительно интересно, как получается, что это компилируется.

...