使用 Plist 字典进行应用程序设置

2024-03-29

我希望能够使用 plist 来进行我在应用程序中实现的设置。我想要一个字典“Settings”来保存我的数组,例如“Debug”、“Option 1”、Option 2”等。如何访问“Settings”字典下的“Debug”数组?

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *myPlistPath = [documentsDirectory stringByAppendingPathComponent:@"ProfileManager.plist"]; 
NSDictionary *plistDict = [[NSDictionary alloc] initWithContentsOfFile:myPlistPath]; 

swDebug.on = [plistDict objectForKey:@"Debug"];

.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Current Profile</key>
<string>Sample Profile</string>
<key>Custom Profiles</key>
<array>
    <dict>
        <key>autolock</key>
        <false/>
        <key>bluetooth</key>
        <false/>
        <key>desc</key>
        <string>Example profile provided by the application</string>
        <key>edge</key>
        <false/>
        <key>phone</key>
        <false/>
        <key>push</key>
        <false/>
        <key>ringtone</key>
        <string>Example.m4r</string>
        <key>threeg</key>
        <false/>
        <key>title</key>
        <string>Example Profile</string>
        <key>vibrate</key>
        <false/>
        <key>wifi</key>
        <false/>
    </dict>
    <dict>
        <key>autolock</key>
        <false/>
        <key>bluetooth</key>
        <false/>
        <key>desc</key>
        <string>Sample profile provided by the application</string>
        <key>edge</key>
        <false/>
        <key>phone</key>
        <false/>
        <key>push</key>
        <false/>
        <key>ringtone</key>
        <string>Sample.m4r</string>
        <key>threeg</key>
        <false/>
        <key>title</key>
        <string>Sample Profile</string>
        <key>vibrate</key>
        <false/>
        <key>wifi</key>
        <false/>
    </dict>
</array>
<key>Settings</key>
<dict>
    <key>Debug</key>
    <string>ON</string>
</dict>
</dict>
</plist>

在您的示例中, Debug 是一个字符串,而不是一个数组(这就是您在问题中所说的)。无论哪种情况,问题都是您在错误的字典中访问密钥。你有:

swDebug.on = [plistDict objectForKey:@"Debug"];

你需要:

swDebug.on = [[plistDict objectForKey:@"Settings"] objectForKey:@"Debug"];

由于设置是字典 plist 中的字典。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Plist 字典进行应用程序设置 的相关文章

随机推荐

  • 在字符串 Objective-c 中连接字符串

    我想将一个字符串放在一个字符串中 基本上是伪代码 first part of string varying string third part of string 我怎样才能在 Objective C 中做到这一点 有没有办法在 obj c
  • Erlang:如何从体内引用匿名函数?

    In Erlang http en wikipedia org wiki Erlang programming language 有没有办法引用当前正在执行的函数 这对于产生无限循环很有用 spawn fun gt do something
  • Azure 搜索和破折号

    我正在使用 Azure 搜索并尝试对文档执行搜索 看起来好像是这样做的 indexes blah docs api version 2015 02 28 search abc 1003 返回与此相同的结果 indexes blah docs
  • 在 OpenSceneGraph 中创建球体(使用 osg::Geometry)

    我花了相当长的时间才使其正常工作 但我的球体无法显示 使用以下代码来实现我的功能 使用 Visual C 在 Opengl 中创建 3D 球体 https stackoverflow com questions 5988686 creati
  • 禁用 jQuery 移动按钮

    我正在尝试禁用此按钮 a Next a 单击事件不应触发 并且按钮 UI 还应反映按钮禁用状态 我尝试过以下方法 next attr disabled true next attr disabled disabled next button
  • 如何处理管道中的$null

    我的 PowerShell 代码中经常遇到以下情况 我有一个返回对象集合的函数或属性 或者 null 如果将结果推入管道 则还可以处理管道中的元素 如果 null是唯一的元素 例子 Project Features Foreach Obje
  • Python Xpath:lxml.etree.XPathEvalError:谓词无效

    我正在尝试学习如何抓取网页 在教程中我使用下面的代码抛出此错误 lxml etree XPathEvalError Invalid predicate 我正在查询的网站是 不要评判我 它是训练视频中使用的网站 https itunes ap
  • Visual Studio 2015 的 Git 问题

    我在使用 TortoiseGit 版本 1 8 16 0 git 版本 2 6 2 windows 1 创建的 git 存储库中有一个 Visual Studio 解决方案 我刚刚将 Visual Studio 从 2015 年更新到 20
  • 将解密的文件读入 ZipInputStream 有时会截断第一个文件

    我正在开发一个电子阅读器应用程序 使用skyepub https skyepub net 基本上将加密的书籍下载到文件系统中 并将解密密钥保存在数据库中 当用户尝试阅读它时 它将书籍加载到内存中并解密 问题是有些书的第一章被截断了 epub
  • 带有预检请求的 CORS 帖子

    我正在尝试使用 CORS 将文件上传到不同域上的服务 但由于来源被拒绝 它们一直失败 据我所知 正在使用正确的标头来允许此操作 JavaScript 请求 var xhr new XMLHttpRequest xhr open POST h
  • 使用 Microsoft Graph API 授予管理员同意 - Java

    我已经使用图形 API 创建了一个应用程序 并为它们分配了权限 委托和应用程序 ServicePrincipal servicePrincipal graphClient servicePrincipals resSerPrinId bui
  • 如何将 Google 地图置于纬度和经度位置的中心?

    考虑以下代码 stores click function console log this data latitude 1754 26265626 console log this data longitude 65 262518 cons
  • C# 4.0 的新酷功能 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 你们正在寻
  • Laravel - 如何在 AppServiceProvider 中获取当前用户

    所以我通常让当前用户使用Auth user 当我确定用户是否实际登录时Auth check 但这似乎不适用于我的AppServiceProvider 我用它来跨所有视图共享数据 我var dump both Auth user and Au
  • 无法在 Mac OS X 10.8 上使用 Homebrew FreeTds 捆绑安装tiny_tds

    我的问题我可以采取哪些万无一失的步骤来 100 使其正常工作 我需要真正的指示 而不是简单的答案或对该过程的模糊概念描述 让我们来一探究竟 似乎某些地方存在冲突 并且我从 GitHub 上的 gem 开发人员那里获得了与我使用 Ruby R
  • 对字符串数组使用快速排序

    我是一名编程学生 我不会发布整个作业 而是请求帮助解决我已经尝试了几个小时才能理解的问题 我的任务是使用快速排序方法对字符串数组进行排序 作为这个问题的一部分 我承担的其他所有任务都很好 但是当我通过打印字符串数组来测试排序方法时 它完全混
  • try,catch和finally的执行顺序是什么[重复]

    这个问题在这里已经有答案了 如果我们在try中给出这样的return语句 执行顺序会是怎样的 try return a catch finally 这里如果try中有return的话执行顺序是怎样的 请告诉我 http docs oracl
  • 功能检测是否需要用户手势

    有没有办法检测是否调用play 是否允许在没有用户手势的情况下在视频元素上进行操作 在 Android Chrome 上会出现此警告 Failed to execute play on HTMLMediaElement API can on
  • 在 Blazor 中获取子组件列表的最佳方法

    我们需要获取子组件列表OnAfterRenderAsync父组件的方法 但是我们不知道该怎么做 我们尝试与RenderBuilder and GetFrames但这始终为空 我们有 Splitter 组件 其中 N 个分割区域作为子组件 我
  • 使用 Plist 字典进行应用程序设置

    我希望能够使用 plist 来进行我在应用程序中实现的设置 我想要一个字典 Settings 来保存我的数组 例如 Debug Option 1 Option 2 等 如何访问 Settings 字典下的 Debug 数组 NSArray