设置NSURL,使%@的值等于%@而不是插入%@

时间:2010-01-15 23:30:43

标签: iphone nsurl

我正在使用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 个答案:

答案 0 :(得分:9)

您的代码不正确,您没有正确进行字符串格式化,它应如下所示:

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

请注意,您不需要保留网址,因为您只是将其传递给请求。

答案 1 :(得分:0)

此NSURL方法不期望格式字符串。 Objective-C编译器对方法所期望的内容做了相当微弱的假设,这可能是你混淆的根源。

改为使用[NSString stringWithFormat:@"..."]

目前,您使用的语法解析为NSURL* url = [(NSURL* object), userName retain];,正如您可能猜测的那样,无效。事实上,我真的很想知道这是怎么编的。