2012-08-12 88 views
0

使用NSUserDefaults類,可以保存與應用程序或用戶數據相關的設置和屬性。iOS SDK:使用NSUserDefaults

現在我有拖的問題:

  1. (設置和屬性)在哪裏存儲? if =>這些對象將被保存在所謂的iOS「默認系統」 那麼:什麼是iOS「默認系統」

  2. 將保存多久?

回答

3

哪裏?這取決於你正在開發什麼樣的應用程序。對於AppStore應用程序,在已安裝的應用程序文件夾的沙箱文件夾中,更確切地說是在Library/Preferences文件夾中。包含設置的實際文件是一個PLIST(屬性列表)文件,其名稱與應用程序的包標識符相匹配。

總而言之:

(/var/mobile/Applications/XXXX-XXXX-XXXXXX-XXXXXXXX/MyApp.app/Library/Preferences/com.mycompany.bundleid.plist 

(其中XXXX等是一個UUID)。

如果您正在爲越獄設備製作應用程序(即,一個Cydia的應用程序),這將是又一個plist文件,其名稱的包ID匹配,但它將被安裝在

/var/mobile/Library/Preferences/com.mycompany.bundleid.plist 

iOS的默認系統爲基礎框架,iOS設備本身和文件的一部分和管理,存儲和修改您的偏好/設置/默認值的目錄。

需要多長時間?再次,這取決於你正在寫什麼樣的應用程序。對於一個普通的AppStore應用程序,默認值是持續到文件 - 但只要用戶不刪除你的應用程序。當你的應用程序被刪除時,整個沙箱,應用程序包和od課程的用戶默認值也將消失。永遠,不可逆轉。

如果您開發駐留在系統應用程序目錄(/應用程序)中的越獄應用程序,那麼即使用戶刪除了您的軟件包/應用程序,用戶默認文件也將在/ var/mobile/Library/Preferences中可用,因爲APT(Cydia的支持包管理器)只會記錄您的包最初包含的文件,而默認的屬性列表文件(僅在您的應用第一次訪問NSUserDefaults類時纔會創建)並非如此。如果用戶手動刪除文件或恢復到股票固件,它會消失。

+1

+1爲徹底的答案。 – jstr 2012-08-12 11:30:52

1

答案:

  1. 在應用程序的沙箱。無論如何,您不會直接訪問默認設置,因此無關緊要。

  2. 只要您的應用程序在設備上。如果您刪除了該應用程序,那麼沙箱也會被刪除,以至於它們被刪除。如果您更新應用程序,則使用相同的沙箱,因此不會被刪除。

至於什麼是,我只是引用你了一下documentation的:

的類NSUserDefaults的提供與默認系統交互的編程接口。默認系統允許應用程序自定義其行爲以匹配用戶的偏好。例如,您可以允許用戶確定應用程序顯示的測量單位或文檔自動保存的頻率。應用程序通過將值分配給用戶的默認數據庫中的一組參數來記錄此類偏好。這些參數被稱爲默認值,因爲它們通常用於確定應用程序在啓動時的默認狀態或默認情況下的默認狀態。

在運行時,您使用NSUserDefaults對象來讀取應用程序在用戶的默認數據庫中使用的默認值。 NSUserDefaults緩存信息以避免每次需要默認值時都必須打開用戶的默認數據庫。同步方法會按週期自動調用,使內存中的緩存與用戶的默認數據庫保持同步。