Я использую ASIHTTPRequest для загрузки фрагментов, которые будут использоваться в моем MKMapView. Тестируя код, он загружает все, что я загружаю, в переменную NSData. (Мои файлы в среднем 50 МБ) Обратите внимание, что это почти то же самое, что this неотвеченный вопрос.
Я обнаружил, что могу напрямую загрузить файл со своего веб-сервера в файл, например:
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadDestinationPath:@"/Users/ben/Desktop/my_file.txt"];
Для просмотра карты мне нужны файлы в папке с именем Tiles
, которая находится внутри сборки моего приложения. Он попадает в этот каталог:
/var/mobile/Applications/887F4691-3B75-448F-9384-31EBF4E3B63E/MyApp.app/Tiles
Что я узнал, когда позвонил:
NSLog(@"%@",[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Tiles"]);
Итак, сейчас я пытаюсь загрузить эти файлы (обратите внимание на множественное число) и поместить их в папку Tiles
. Для начала я могу либо заархивировать эти изображения вместе, чтобы извлечь их позже на моем устройстве и поместить в папку Tiles
, либо я могу просто пойти дальше и загрузить все изображения по отдельности (что кажется проще, поскольку я уже знаю все имена файлов)
Я попробовал этот фрагмент кода, и он выдает ошибку. Он находится в 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, где я смогу найти и использовать его позже?
Спасибо за беспокойство.