Хранение NSData в пути сборки приложения с ASIHTTPRequest - PullRequest
0 голосов
/ 27 июня 2011

Я использую ASIHTTPRequest для загрузки плиток, которые будут использоваться в моем MKMapView.Тестируя код, он загружает все, что я загружаю, в переменную NSData.(Мои файлы занимают в среднем 50 МБ). Обратите внимание, что это практически то же самое, что и этот вопрос без ответа.

Я обнаружил, что могу напрямую загрузить файл с моего веб-сервера в файл, например:

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, либо я могу просто скачать все изображения отдельно (что кажется проще, так как я уже знаю все файлы).имена)

Я попробовал этот кусок кода, и он дает мне ошибку.Это в моем 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, где я смогу найти его и использовать позже?

Спасибо за беспокойство.

1 Ответ

3 голосов
/ 27 июня 2011

Вы не можете писать прямо в ваш пакет приложений.Вы должны использовать каталог внутри песочницы вашего приложения, например / Documents или / Library / Caches.См. Получение путей к стандартным каталогам приложений , чтобы узнать, как получить эти пути.

...