2012-01-19 20 views
4

在的NSOperation子類中,我使用下面的代碼下載從我們的服務器的XML文件,再後來解析它:使用NSURLConnection的緩存時設備離線

NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] 
              cachePolicy:NSURLRequestUseProtocolCachePolicy 
             timeoutInterval:15]; 
NSData * receivedData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 

我第二次做相同的請求,服務器返回HTTP 304,並且緩存的響應數據存儲在receivedData中。到現在爲止還挺好。

我的問題:是否可以在設備脫機時獲得相同的緩存響應

+0

我假設你的意思是自動從'NSURLConnection'中,而不是手動存儲本地數據,並在網絡關閉時進行咳嗽。 – NJones

+0

確實。無論如何都會緩存數據,如果在網絡關閉時有一種方法加載數據,那將會非常棒。 – vtim

回答

0

NSURLCache不支持磁盤高速緩存。你可以簡單地手動存儲它或使用它: https://github.com/steipete/SDURLCache

這是非常簡單的緩存,它的工作......非常簡單的用法,只有一個類...它也支持etags。

 


    // Do this only once in your app... 
    SDURLCache *urlCache = [[SDURLCache alloc] initWithMemoryCapacity:1024*1024 // 1MB mem cache 
                 diskCapacity:1024*1024*5 // 5MB disk cache 
                  diskPath:[SDURLCache defaultCachePath]]; 
    [NSURLCache setSharedURLCache:urlCache]; 
    [urlCache release]; 

 
+1

ios5和ios6支持磁盤緩存。如果在沒有SDURLCache的情況下如何實現這一點,將會很高興地提供一些額外的答案... –