2012-05-08 51 views
1

我想在用戶連接到網絡並離線存儲(包括圖像/資源)時加載網頁。如果用戶沒有連接到任何網絡,那麼我應該加載之前存儲的網頁。我試過NSData dataWithContentsOfURL:(NSURL *)urlNSString stringWithContentsOfURL但這些商店只存儲html內容而不是資源。 在此先感謝。如何在iphone中緩存整個網頁?

回答

0
write this data into file using 

-(void)writeDataToFile:(NSString*)filename 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    if(filename==nil) 
    { 
     DLog(@"FILE NAME IS NIL"); 
     return; 
    } 
    // the path to write file 
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat: @"%@",filename]]; 
    /*NSData *writeData; 
    writeData=[NSKeyedArchiver archivedDataWithRootObject:pArray]; */ 
    NSFileManager *fm=[NSFileManager defaultManager]; 
    if(!filePath) 
    { 
     //DLog(@"File %@ doesn't exist, so we create it", filePath); 
     [fm createFileAtPath:filePath contents:self.mRespData attributes:nil]; 
    } 
    else 
    { 
     //DLog(@"file exists"); 
     [self.mRespData writeToFile:filePath atomically:YES]; 
    } 

    NSMutableData *resData = [[NSMutableData alloc] init]; 
    self.mRespData=resData; 
    [resData release]; 
} 

,並在下一次加載它

+0

我不認爲這回答了這個問題。這不是關於如何存儲數據,而是關於如何下載網站的一切並將其存儲。 –

+0

你想要存儲什麼數據? – Saad

+0

我不想存儲任何數據,但提問者似乎......問題 - 據我瞭解 - 是:如何保存任何*網站的*所有內容以供日後離線使用。 –

0

我想簡單的解決方法是這樣的 - 「Safari瀏覽器客戶端存儲和離線應用程序編程指南」,http://developer.apple.com/library/safari/#documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Introduction/Introduction.html

只有當你正在使用的應用程序HTML5和webview,到目前爲止還沒有測試這種方法,所以它可能工作。

+0

這是關於離線存儲,如果你是網絡開發者,但問題是如何存儲*任何*網站離線使用。 –

+0

謝謝你告訴我,你是對的,只有當我們用webview和HTML5製作應用程序時,HTML5才能完成這項工作。 – Tom

0

我不知道是否有一個在線的解決方案一樣myWebView.cache4Offline = YES;,但我擔心,只要你,如果你想任何網站脫機可用內沒有訪問到網站的代碼(即你的應用程序),你必須自己編寫這個程序。關於它的思考,它似乎並不那麼困難:

  1. 掃描圖像的URL的HTML字符串(和一切你需要的)
  2. 下載使用NSData dataWithContentsOfURL(也許有點惱人從互聯網上這些資源,因爲選項:錯誤:相對/絕對URL
  3. 保存的數據與NSData的將writeToFile到文件)
  4. 在HTML從3.更換URL與文件路徑(OR,更好地利用公約在轉換他們網址文件的URL)

希望它可以幫助

+0

這個解決方案可以工作,除了你無法用hTML中的文件路徑替換URL之外,因爲filePath指向NSData而不是.png圖像 –

2

你可以做到這一點與ASIHttpRequest。如果你不想使用該項目(它不再是活動的),你可以查看代碼以及它的功能。查看this瞭解更多信息。