NSUserDefaults objectIsForcedForKey 与嵌套字典

Posted

技术标签:

【中文标题】NSUserDefaults objectIsForcedForKey 与嵌套字典【英文标题】:NSUserDefaults objectIsForcedForKey with a nested dictionary 【发布时间】:2017-08-24 21:26:46 【问题描述】:

目前我正在使用[[NSUserDefaults standardDefaults] objectIsForcedForKey: @"TestKey"]; 来验证密钥是否被管理。

这对于在列表中包含每个键的 plist 非常有用

 <plist version="1.0">
    <dict>
       <key>Test</key>
       <integer>1</integer>
    </dict>
 </plist> 

但是当我使用嵌套字典时 - 函数似乎看不到对象正在被管理

<plist version="1.0">
    <dict>
       <key>TestKey1</key>
       <integer>1</integer>
       <dict>
            <key>Dictionary2</key>
            <dict>
              <key>TestKey3</key>
              <string>testkey3_value</string>
           </dict>
       </dict>
    </dict>
 </plist> 

当我尝试做类似[[NSUserDefaults standardDefaults] objectIsForcedForKey: @"TestKey3"]; 的事情时,它似乎没有意识到它正在被管理

【问题讨论】:

【参考方案1】:

您的默认域不包含名为 "TestKey3" 的键。包含该键的字典是您自己的字典,不由NSUserDefaults 管理。因此,NSUserDefaults 的 API 将无法看到“TestKey3”。

【讨论】:

以上是关于NSUserDefaults objectIsForcedForKey 与嵌套字典的主要内容,如果未能解决你的问题,请参考以下文章

将UIColor保存到NSUserDefaults并从NSUserDefaults加载

NSUserDefaults 不可靠?

何时(不)滥用 NSUserDefaults

首选项(NSUserDefaults)崩溃?

iOS之NSUserDefaults的用法

NSUserDefaults读取和写入自定义对象