Xcode UIWEBVIEW скачать, сохранить HTML-файл и показать - PullRequest
3 голосов
/ 29 января 2012

Я хочу загрузить страницу и показать ее в локальной сети WEBVIEW, но изображения отсутствуют.Изображения отображаются только, когда я в сети, в автономном режиме они отсутствуют.Как я могу решить это?Это код, который я использовал до сих пор:

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.

- (void)viewDidLoad
{

    NSURL *url = [NSURL URLWithString:@"http://livedemo00.template-help.com/wt_37587/index.html"]; 


    //[WEBVIEW loadRequest:reqURL];


    // Determile cache file path
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *filePath = [NSString stringWithFormat:@"%@/%@", [paths objectAtIndex:0],@"index.html"];   

    // Download and write to file

    NSData *urlData = [NSData dataWithContentsOfURL:url];
    [urlData writeToFile:filePath atomically:YES];

    // Load file in UIWebView
    [WEBVIEW loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];      



    [super viewDidLoad];
}

1 Ответ

4 голосов
/ 29 января 2012

Я собирался написать это несколько недель назад, и этот вопрос, наконец, заставил меня сделать это. См. Встроенное автономное кэширование для UIWebView (и NSURLProtocol) .

.

Краткий ответ, по моему опыту, заключается в том, что самым простым решением является использование NSURLProtocol для перехвата NSURLConnection запросов (в том числе сделанных UIWebView) и записи результатов на диск. Если запрос сделан, когда вы не в сети, просто прочитайте ответ с диска и воспроизведите его. Это чрезвычайно прозрачно для остальной части приложения и позволяет избежать всех видов крайних случаев, связанных с подклассами NSURLCache. (Для получения дополнительной информации о том, как создать подкласс NSURLCache, см. Подстановка локальных данных для удаленных запросов UIWebView на Cocoa With Love и AFCache .)

Мой NSURLProtocol подход очень прост и не является универсальным решением для кэширования. Он предназначен для помощи UIWebView, когда вы не в сети. Но для этого, я думаю, это хорошо решает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...