2017-06-12 54 views
0

在我的iOS應用程序中,我想存儲一些用戶特定的數據。iOS設備上的用戶特定文檔目錄

我預計NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]返回用戶的文檔目錄,而是它返回以下目錄:/var/mobile/Containers/Data/Application/%app_id%/Documents

,當我和我的iOS設備上的其他用戶(蘋果ID)登錄,這條道路保持完全一樣。

看起來這個目錄只是用戶在Mac OS中特定的。

那麼我應該使用哪個目錄在iOS中存儲用戶特定的數據?

UPDATE:

根據前面的答案和意見,期望的行爲似乎並不意。

+0

你是什麼意思'當我用我的iOS設備上的其他用戶登錄時,此路徑保持完全相同。 – TawaNicolas

+0

另一個用戶=另一個Apple-ID – ndreisg

+0

它應該返回什麼?那究竟是什麼問題?你只需要保留「%app_id%/」之後的內容。 – Larme

回答

2

Apple Documentation

Where You Should Put Your App’s Files

穿戴用戶數據。用戶數據通常包括您可能想要公開給用戶的任何文件 - 您可能希望用戶創建,導入,刪除或編輯的任何文件。對於繪圖應用程序,用戶數據包括用戶可能創建的任何圖形文件。對於文本編輯器,它包含文本文件。視頻和音頻應用甚至可能包含用戶以後下載觀看或收聽的文件。

將應用程序創建的支持文件放在庫/應用程序支持/目錄中。一般來說,這個目錄包含應用程序用來運行但應該對用戶保持隱藏的文件。該目錄還可以包含數據文件,配置文件,從應用程序包加載的資源的模板和修改版本。

請記住,文檔/和應用程序支持/中的文件默認進行備份。您可以使用NSURLIsExcludedFromBackupKey鍵調用 - [NSURL setResourceValue:forKey:error:]從備份中排除文件。任何可以重新創建或下載的文件都必須從備份中排除。這對於大型媒體文件尤爲重要。如果您的應用程序下載視頻或音頻文件,請確保它們不包含在備份中。

將臨時數據放入tmp/目錄中。臨時數據包含您不需要長時間堅持的任何數據。請記住在完成這些文件後刪除這些文件,以便它們不會繼續佔用用戶設備上的空間。當您的應用程序未運行時,系統會定期清除這些文件;因此,在應用程序終止後,您不能依賴這些文件。

將數據緩存文件放入Library/Caches/目錄中。高速緩存數據可用於任何需要比臨時數據持續更長的數據,但不能與支持文件一樣長。一般而言,應用程序不需要緩存數據就能正常運行,但它可以使用緩存數據來提高性能。緩存數據的例子包括(但不限於)數據庫緩存文件和瞬時的,可下載的內容。請注意,系統可能會刪除Caches /目錄以釋放磁盤空間,因此您的應用必須能夠根據需要重新創建或下載這些文件。

0

您可以在文檔目錄中爲您的應用程序創建一個新文件夾試試以下代碼創建一個文件夾。當你想要在應用程序上的數據時,不要忘記從同一個目錄中讀取。

當你不想提供訪問其他用戶,那麼你要麼必須刪除註銷該文件夾或必須做文件夾用戶id或其他一些唯一鍵。我建議在註銷時刪除該特定文件夾。在文檔/

let yourPathToDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String + "/" + "YourAppDirDir" + "/" 

    if !fileManager.fileExists(atPath: yourPathToDirectory!) { 
     do { 
      try FileManager.default.createDirectory(atPath: yourPathToDirectory!, withIntermediateDirectories: true, attributes: nil) 
     } catch { 
      print("error found") 
     } 
    } 
+0

此目錄也不是用戶特定的 – ndreisg

+0

查看更新的答案。 – dip

+0

我的應用沒有用戶管理。我的意思是當一個iOS設備被不同的Apple-ID使用時,一個Apple-ID不應該看到另一個Apple-ID的數據。 – ndreisg