2011-07-18 19 views
12

我想獲得一個列表的下載url。我正在使用NSURLConnection以獲得具有此列表的URL的JSON文件。 在無法獲取connectionDidFinishDownloading爲ios5的destinationURL數據

- (void)connection:(NSURLConnection *)connection didWriteData:(long long)bytesWritten totalBytesWritten:(long long)totalBytesWritten 

我得到122239的總字節寫入。 當

- (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *)destinationURL 

叫我試圖以提取JSON文件中讀取URL數據:

NSData *data = [NSData dataWithContentsOfURL:destinationURL options:NSDataReadingUncached error:&error]; 

數據總是給我一個零值也有寫122239字節此文件和錯誤打印說明顯示「沒有這樣的文件或目錄」

Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn\u2019t be completed. (Cocoa error 260.)" UserInfo=0x4a1b90 {NSFilePath=/private/var/mobile/Applications/CD8E4838-D78D-41DE-8896-360B7FC02A1D/tmp/c1749157e1d4317f6158a8490e138e7e, NSUnderlyingError=0x4c5ae0 "The operation couldn\u2019t be completed. No such file or directory"} 

有什麼建議嗎?

+2

你有沒有解決這個問題?我有完全相同的問題 – JConway

+0

我有同樣的問題,並做了一些谷歌。這似乎是一個錯誤。希望iOS更新能夠解決這個問題。 – Klaas

+0

您是否在http://bugreport.apple.com上提供了雷達?如果你認爲這是一個錯誤,並且你有一個小的代碼示例來演示,那麼根據我的經驗,你可以大大增加這個問題的可能性。 – Philippe

回答

10

NSURLConnectionDownloadDelegate目前僅適用於Newstand應用。請提交一個錯誤。

3

您可以嘗試使用NSURLConnectionDataDelegate來代替。它不會出現在文檔中,但它實際上存在(使用快速打開找到它Cmd + Shift + O)。

在那裏,你可以使用下面的方法

  1. - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
  2. - (void)connectionDidFinishLoading:(NSURLConnection *)connection
+3

如果NSURLConnectionDownloadDelegate方法存在於你的類中,NSURLConnectionDataDelegate將不會被調用。小心! – jAckOdE

+0

這完全適合我。 jAckOdE的建議也非常重要。 –

+0

...但只能用於小(ish)文件。 – thomers

0

出現在你的類i如果NSURLConnectionDownloadDelegate方法,NSURLConnectionDataDelegate不會被調用。小心! - jAckOdE感謝下面的Erik Aigner的回答。

基本上... NSURLConnectionDownloadDelegate覆蓋NSURLConnectionDataDelegate。謹防!!! :)

0
– (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data 

以上方法用於接收我們使用post方法得到的數據。

– (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 

這種方法,你可以用來接收錯誤報告,如果沒有連接到服務器。

– (void)connectionDidFinishLoading:(NSURLConnection *)connection 

上述方法用於連接成功後處理數據。