顯示 UserDefaults 的全部內容和路徑
Published in
4 min readJan 29, 2018
開發 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 檔打開它後,即可看到它儲存的內容。