2010-01-15 61 views
2

我使用ASIHTTP插入%,並試圖執行一個網站的GET請求的NSURL:設置與%@決策值等於%@代替@

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聲明中有些東西是不正確的。

感謝您的幫助!

回答

9

你的代碼不正確,你是不是做正確的字符串格式化,它應該是這樣的:

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

注意,你不需要保留,你只是把它傳遞給請求的URL以及。

+0

請參閱NSString的文檔:http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/clm/NSString/stringWithFormat: – Eld 2010-01-15 23:36:36

+0

嗯,當我這樣做時,我的程序在控制檯上得到SIGABRT: - [NSCFString absoluteURL]:無法識別的選擇器發送到實例0x2630c 2010-01-15 18:32:16.013 HTTPExampleProject [18253:207 ***終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因: '*** - [NSCFString absoluteURL]:無法識別的選擇發送到實例0x2630c' – quantumpotato 2010-01-16 00:33:34

+0

您可以發佈您更新的代碼? – 2010-01-16 02:05:26

0

這NSURL方法不指望一個格式字符串。 Objective-C編譯器對於一種方法所期望的方式做出了非常薄弱的​​假設,這可能是您混淆的根源。

使用[NSString stringWithFormat:@"..."]代替。

目前的語法使用解析爲NSURL* url = [(NSURL* object), userName retain];,這一點,您可能已經猜到的,無效的。事實上,我真的很想知道這是如何編寫的。