2011-06-26 37 views
0

我使用ASIHTTPRequest下載要在我的MKMapView中使用的tile。測試下載的任何我下載的代碼到NSData變量中的代碼。 (我的文件平均爲50MB)請注意,這與this未答覆的問題基本相同。使用ASIHTTPRequest在應用程序構建路徑中存儲NSData

我發現,我可以直接下載從我的web服務器文件到文件例如爲:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setDownloadDestinationPath:@"/Users/ben/Desktop/my_file.txt"]; 

對於MapView的我需要一個叫做文件夾這是我的應用程序的構建裏面的文件。

/var/mobile/Applications/887F4691-3B75-448F-9384-31EBF4E3B63E/MyApp.app/Tiles

,我發現,當我叫:它在這個目錄中結束

NSLog(@"%@",[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Tiles"]); 

所以我現在要做的是下載這些文件(注意複數)並將它們放在文件夾中。首先,我可以將這些圖像壓縮在一起,稍後在我的設備上提取並放入文件夾,或者我可以單獨下載所有圖像(這似乎更容易,因爲我已經知道所有文件名)

我試過這段代碼,它給了我一個錯誤。在加載圖塊之前,它在我的mapview的viewDidLoad中。 請注意,它僅用於測試下載代碼,稍後將放置在其他位置以便由按鈕觸發。

下面是代碼:

NSURL *url = [NSURL URLWithString:@"http://...my-website.../25.png"]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setDownloadDestinationPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Tiles"]]; // THE PROBLEMATIC LINE 
[request startSynchronous]; 
NSError *error = [request error]; 
if(!error) 
{ 
    NSLog(@"Loaded Map"); 
} 
else 
{ 
    NSLog(@"Error occured while loading map"); 
    NSLog(@"%@",error); 
} 

而這出現在控制檯:

2011-06-26 21:12:09.651 MyApp[5309:707] Error occured while loading map 
2011-06-26 21:12:09.669 MyApp[5309:707] Error Domain=ASIHTTPRequestErrorDomain Code=8 "Failed to delete file at path '/var/mobile/Applications/887F4691-3B75-448F-9384-31EBF4E3B63E/MyApp.app/Tiles'" UserInfo=0x184b20 {NSUnderlyingError=0x1d4ac0 "The operation couldn’t be completed. (Cocoa error 513.)", NSLocalizedDescription=Failed to delete file at path '/var/mobile/Applications/887F4691-3B75-448F-9384-31EBF4E3B63E/MyApp.app/Tiles'} 

那麼,如何可以下載的文件存儲在iPhone上的一個目錄在哪裏可以找到並在以後使用它?

感謝您的麻煩。

回答

3

你不能直接寫入你的應用程序包。您應該在應用程序的沙箱中使用目錄,例如/ Documents或/ Library/Caches。有關如何獲取這些路徑,請參閱Getting paths to standard application directories

+0

甜蜜的感謝。我所有的努力和你在一個段落中解決問題!哈哈謝謝你! – LouwHopley

相關問題