Eth*_*han 221 macos objective-c nsuserdefaults ios
有没有办法直接查看已保存的内容NSUserDefaults?我想看看我的数据是否正确保存.
小智 351
您可以将所有当前NSUserDefaults打印到日志中:
只是键:
NSLog(@"%@", [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]);
Run Code Online (Sandbox Code Playgroud)
键和值:
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
Run Code Online (Sandbox Code Playgroud)
Red*_*ing 159
如果你去,你可以在模拟器中找到你的应用程序的pList文件:
/ users/您的用户名/Library/Application Support/iPhone Simulator/<Sim Version>/Applications
该目录有一堆GUID命名目录.如果您正在开发一些应用程序,那么会有一些应用程序.所以你需要找到你的app二进制文件:
find . -name foo.app
./1BAB4C83-8E7E-4671-AC36-6043F8A9BFA7/foo.app
Run Code Online (Sandbox Code Playgroud)
然后转到GUID目录中的Library/Preferences目录.所以:
cd 1BAB4C83-8E7E-4671-AC35-6043F8A9BFA7/Library/Preferences
Run Code Online (Sandbox Code Playgroud)
你应该找到一个看起来像这样的文件:
<Bundle Identifier>.foo.pList
Run Code Online (Sandbox Code Playgroud)
在pList编辑器中打开它并浏览持久值到您心中的内容.
foo*_*s27 76
for (key, value) in UserDefaults.standard.dictionaryRepresentation() {
print("\(key) = \(value) \n")
}
Run Code Online (Sandbox Code Playgroud)
print(Array(UserDefaults.standard.dictionaryRepresentation()))
Run Code Online (Sandbox Code Playgroud)
// Using dump since the keys are an array of strings.
dump(Array(UserDefaults.standard.dictionaryRepresentation().keys))
Run Code Online (Sandbox Code Playgroud)
我们也可以在这里使用dump,但是这将返回values数组中每个元素的完整继承层次结构.如果需要有关对象的更多信息,则使用dump,否则继续使用普通的print语句.
// dump(Array(UserDefaults.standard.dictionaryRepresentation().values))
print(Array(UserDefaults.standard.dictionaryRepresentation().values))
Run Code Online (Sandbox Code Playgroud)
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation())
Run Code Online (Sandbox Code Playgroud)
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().keys.array)
Run Code Online (Sandbox Code Playgroud)
print(NSUserDefaults.standardUserDefaults().dictionaryRepresentation().values.array)
Run Code Online (Sandbox Code Playgroud)
Mor*_*ion 39
您可以检查返回的数组中每个键的值
[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys]
Run Code Online (Sandbox Code Playgroud)
Nie*_*tle 21
在模拟器中运行时,我有时会使用以下代码段打印出我的NSUserDefaults文件的位置
NSArray *path = NSSearchPathForDirectoriesInDomains( NSLibraryDirectory, NSUserDomainMask, YES); NSString *folder = [path objectAtIndex:0]; NSLog(@"Your NSUserDefaults are stored in this folder: %@/Preferences", folder);
它会生成首选项文件夹的路径
您的NSUserDefaults存储在以下文件夹中:/ Users/castle/Library/Application Support/iPhone Simulator/User/Applications/BC5056A0-F46B-4AF1-A6DC-3A7DAB984960/Library/Preferences
您的NSUserDefaults文件位于首选项文件夹中,并根据您的前缀和应用名称命名,例如
dk.castleandersen.dreamteam.grid.plist
Run Code Online (Sandbox Code Playgroud)
我希望实际设备也是如此.
很简单,因为 plist 文件名是<app-bundle-identifier>.plist,你可以使用find命令来找到它的路径。但是如果你搜索整台计算机需要很长时间,所以你必须选择一个好的范围,比如~/Library/Developer/CoreSimulatorXcode 6。
例子:
find ~/Library/Developer/CoreSimulator -type f -name com.awesome.app.plist
输出将是这样的......
/Users/hlung/Library/Developer/CoreSimulator/Devices/B61913F6-7D7C-4E45-AE2F-F45220A71823/data/Containers/Data/Application/E4CC51CF-11E5-4168-8A74-6BAE3B89998F/Library/Preferences/com.awesome.app.plist
从那里你可以使用open命令。或者,如果您使用iTerm2,只需在路径上单击命令即可打开它。
在Swift 4.0中
//func dictionaryRepresentation() -> [String : AnyObject]
Run Code Online (Sandbox Code Playgroud)
因为NSUserDefaults.standardUserDefaults()的dictionaryRepresentation返回[String:AnyObject]
我们把它变成了一个NSDictionary.然后通过在括号'()'中包围它将允许我们像在任何NSDictionary上一样调用.allKeys或.allValues
print((UserDefaults.standard.dictionaryRepresentation() as NSDictionary).allKeys)
Run Code Online (Sandbox Code Playgroud)
使用以下代码.
NSLog(@"NSUserDefault: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
Run Code Online (Sandbox Code Playgroud)
对于OS X 应用程序,使用defaults命令行实用程序比查找应用程序的默认 plist 文件更简单。
姓名
Run Code Online (Sandbox Code Playgroud)defaults -- access the Mac OS X user defaults system概要
Run Code Online (Sandbox Code Playgroud)defaults [-currentHost | -host hostname] read [domain [key]] defaults [-currentHost | -host hostname] read-type domain key defaults [-currentHost | -host hostname] write domain { 'plist' | key 'value' } defaults [-currentHost | -host hostname] rename domain old_key new_key defaults [-currentHost | -host hostname] delete [domain [key]] defaults [-currentHost | -host hostname] { domains | find word | help }描述
defaults允许用户从命令行 shell 读取、写入和删除 Mac OS X 用户默认值。Mac OS X 应用程序和其他程序使用默认系统来记录用户首选项和其他在应用程序未运行时必须维护的信息(例如新文档的默认字体或信息面板的位置)。大部分信息都可以通过应用程序的首选项面板访问,但有些则不能,例如信息面板的位置。您可以通过以下方式访问此信息defaults
例子:
$ defaults read com.apple.Safari
{
AutoplayPolicyWhitelistConfigurationUpdateDate = "2018-08-24 17:33:48 +0000";
AutoplayQuirksWhitelistConfigurationUpdateDate = "2018-08-24 17:33:48 +0000";
DefaultBrowserPromptingState2 = 4;
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91632 次 |
| 最近记录: |