顯示 UserDefaults 的全部內容和路徑

開發 iOS App 時,儲存資料的方法很多。這當中 UserDefaults 不見得是最好的,也不太適合儲存大量的資料,但它絕對是最簡單,最容易上手的。一般我們只知道如何透過 UserDefaults 讀取和儲存資料,接下來就讓我們瞧瞧兩個比較少人知道的 UserDefaults 秘密。

秘密一: 顯示 UserDefaults 的全部內容

print(UserDefaults.standard.dictionaryRepresentation())

dictionaryRepresentation() 回傳 [String : Any], 透過它我們可將 UserDefaults 的內容看光光。

["AKLastCheckInAttemptDate": 2018-01-13 08:24:23 +0000, "AddingEmojiKeybordHandled": 1, "NSInterfaceStyle": macintosh, "PKKeychainVersionKey": 4, "AKLastIDMSEnvironment": 0, "AppleLanguagesDidMigrate": 15C107, "NSLanguages": <__NSSingleObjectArrayI 0x608000006620>(en), "AppleKeyboards": <__NSCFArray 0x608000089880>(en_US@sw=QWERTY;hw=Automatic,emoji@sw=Emoji,en_US@sw=QWERTY;hw=Automatic), "新好男人": 彼得潘, "AppleITunesStoreItemKinds": <__NSCFArray 0x608000172000>(itunes-u,movie,ringtone,album,software-update,booklet,tone,music-video,song,podcast,software,podcast-episode,wemix,eBook,artist,mix,document), "AppleLocale": en_US, "ApplePasscodeKeyboards": <__NSCFArray 0x6080000897e0>(en_US@sw=QWERTY;hw=Automatic,emoji@sw=Emoji,en_US@sw=QWERTY;hw=Automatic), "AppleKeyboardsExpanded": 1, "AppleLanguages": <__NSCFArray 0x6080002726c0>(en)]

秘密二: UserDefaults 的路徑

UserDefaults 其實是個檔案,但是它藏在哪呢 ? 別著急,透過以下步驟即可找到:

1 利用 NSHomeDirectory() 取得 App 資料夾的位置。

print(NSHomeDirectory())

結果

/Users/shih-yingpan/Library/Developer/CoreSimulator/Devices/5B40DEAA-27DD-498B-8180-74E34805143C/data/Containers/Data/Application/E1D83948-A1BA-4AA6-A301-B38A7AAA508C

2 在 Terminal App 打開此路徑

open /Users/shih-yingpan/Library/Developer/CoreSimulator/Devices/5B40DEAA-27DD-498B-8180-74E34805143C/data/Containers/Data/Application/841DB820-09DC-45CC-94DE-44DD61BC14DD

3 它就藏在 NSHomeDirectory 下的 Library/Preferences/com.peter.Demo.plist,附檔名為 plist,檔名為 App 的 bundle ID。

雙擊 plist 檔打開它後,即可看到它儲存的內容。

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com