2014-09-25 36 views
0

我有一個應用程序,它使用從我們的服務器下載的大量數據(基本上是圖像),並且應該可以在沒有互聯網連接的情況下使用。存儲應用程序內容的最佳地點

我以前用<Application_Home>/Library/Caches這個目錄存儲它們,但是在iOS更新過程之後,它們全部被刪除了。這種行爲對我來說是不可接受的,現在我正在尋找更好的地方來存儲數據,並確保它們不會被系統刪除。

什麼是存儲這種數據的最佳地點?

+1

'Documents'文件夾怎麼樣?是你爲什麼沒有在那裏儲存任何東西的特殊原因? – holex 2014-09-25 11:20:21

+0

是的,蘋果說:「使用此目錄存儲重要的用戶文檔和應用程序數據文件。關鍵數據是任何不能由您的應用程序重新創建的數據,例如用戶生成的內容。」 – Lloyd18 2014-09-25 13:03:06

+1

你剛纔引用了這裏的觀點:_「關鍵數據是你的應用程序無法重新創建的任何數據」_,你的文章的第一句話是關於_「(...)大量數據(基本上是圖像)我們的服務器(...)「_,所以問題是,**這些圖像是否可以通過您的應用重新創建?**。如果你的答案是_no_,那麼沒有理由不能使用'Documents'文件夾...如果你的答案是_yes_,那麼你不需要在任何地方存儲這些圖像,因爲你的應用程序可以在運行時重新創建這些圖像。 .. – holex 2014-09-25 13:20:02

回答

3

緩存目錄就是名稱所暗示的緩存。緩存可以清空,你應該確實重新下載圖像。文檔目錄是存儲這些圖像的好地方,但您應該在文件上存儲skip iCould backup key

只是一個小尖,總是請使用URLForDirectory:inDomain:appropriateForURL:create:error:NSSearchPathForDirectoriesInDomains

+1

但是蘋果說只有用戶數據或無法重新創建的數據應該存儲在Documents目錄中。我很確定,如果我嘗試在那裏存儲數據,那麼該應用將被拒絕。 嗯...那麼/Library/Application Support目錄呢? – Lloyd18 2014-09-25 13:00:11

+0

我保存了很多可重現的數據,但只要添加'NSURLIsExcludedFromBackupKey'就可以。 – rckoenes 2014-09-25 13:04:27

+0

謝謝!我會嘗試。 – Lloyd18 2014-09-25 13:06:55

1

的文件目錄的數據只有iOS不刪除:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsPath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; 

數據的文檔與iCloud的同步。如果你有很多人,你需要禁用這個選項:

[urlOfImage setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error]; 
相關問題