Не очень удачное, но простое в реализации решение - синхронная загрузка.Например, чтобы загрузить корневую страницу Google, вы можете сделать:
NSData *d = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"]];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *file = [documentsDirectory stringByAppendingPathComponent:@"goog.html"];
[d writeToFile:file atomically:YES];
Это не очень хорошо по двум причинам:
- Он хранит файл в памяти, поэтому не будет работать для больших файлов
- Это синхронно, поэтому, если вы запустите это в главном потоке, оно заморозит ваше приложение во время загрузки
Лучшее решение - использовать NSURLConnection и выполнять асинхронную загрузку.В вашем делегате NSURLConnection создайте файл, когда загрузка начнется, и добавьте данные в соединение - (void): (NSURLConnection *), метод didReceiveData: (NSData *) d.Посмотрите на классы NSURLConnection, NSFileManager и NSFileHandle.