在iPhone应用程序中访问Settings.bundle的Child.plist - 如何?

Sag*_*ari 3 iphone xcode plist settings.bundle

我在访问Settings.bundle时遇到问题.

让我解释一下我到底在做什么.

  1. 来自文件的任何类型的新项目模板(在iPhone OS下) - 优选基于视图.
  2. 现在右键单击您的项目/资源组.
  3. 选择添加/新文件
  4. 在iPhone Os下 - 资源 - 设置包.
  5. 将其命名为严格"Settings.bundle"

现在非常重要的一步.

  1. 展开项目中的Settings.bundle.
  2. 单击Root.plist
  3. 在编辑器中 - 展开首选项说明符
  4. 删除第2项,第3项,第4项
  5. 选择项目1并复制并过去它.
  6. 编辑项目2'类型(项目1的副本)
  7. PSChildPaneSpecifier设置为类型(item2)
  8. 根据需要设置标题.
  9. 向此(第2项)字典添加新的键值对.
  10. Set Key ="File"&String ="FontSettings"

现在在上面的步骤中,我已经指定"我需要一个子窗格进行设置",并且将从FontSettings.plist加载子窗格设置

好.进一步措施.

  1. 现在,右键单击您的Settings.bundle/en.lproj(因为我们需要在settings.bundle下添加另一个plist文件.
  2. 添加/新文件 - 在Mac OS x下 - 选择其他 - >属性列表
  3. 命名为FontSettings.plist

仅用于验证settings.bundle是否包含该文件.

  1. 在finder中打开您的项目.
  2. 右键单击Settings.bundle
  3. 单击显示包内容.
  4. 如果它在包内容中显示FontSettings.plist,那么它至今仍是完美的.

现在,For FontSettings.plist

  1. 在settings.bundle下打开Root.plist.
  2. 将Stringtable,PreferenceSpecifiers复制到FontSettings.plist
  3. 现在在FontSettings.plist中 - 根据需要添加设置.

检查模拟器.

  1. 运行程序并点击按钮.(终止应用程序.)
  2. 前往设置.
  3. 打开您的项目设置
  4. 你可以去儿童窗格.

直到现在,我相信我已经按照正确的步骤.

我现在遇到的问题就在这里.

如果只有一个Root.plist,我们可以直接访问

[[NSUserDefaults standardUserDefaults] stringForKey:@"fName"]
Run Code Online (Sandbox Code Playgroud)

像上面一样.

但问题是"如何访问 - 子窗格设置?"

我试过以下方式

NSString *str=[[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"];
NSString *path=[str stringByAppendingPathComponent:@"FontSettings.plist"];
NSDictionary *dFor=[NSDictionary dictionaryWithContentsOfFile:path];
Run Code Online (Sandbox Code Playgroud)

但上面代码中的问题是"它只是每次都给我相同的默认值,即使在更改iPhone设置的值 - 设置之后.

如何访问Child.plist设置?(该用户已设置).

ken*_*ytm 5

您可以像根设置一样访问子窗格设置.在访问用户默认值时,层次结构之间没有区别.

例如,如果FontSettings.plist中的PSToggleSwitchSpecifier Key存在isBold,那么您将访问此设置

[[NSUserDefaults standardUserDefaults] boolForKey:@"isBold"]
Run Code Online (Sandbox Code Playgroud)

  • 对于遇到这种情况的任何人来说,如果看起来无法访问这些值,则很可能是您的问题是__default值被读为nil__. (3认同)