【发布时间】:2010-12-22 09:00:09
【问题描述】:
通过用户定义的设置在 Info.plist 文件中设置属性很简单,您只需使用 ${YOUR_SETTING_NAME} 作为值。但是,是否可以为布尔属性执行此操作?布尔值的 plist 文件中的结构是:
<key>NSAppleScriptEnabled</key>
<false/>
这里不清楚如何使用用户定义的设置。
【问题讨论】:
通过用户定义的设置在 Info.plist 文件中设置属性很简单,您只需使用 ${YOUR_SETTING_NAME} 作为值。但是,是否可以为布尔属性执行此操作?布尔值的 plist 文件中的结构是:
<key>NSAppleScriptEnabled</key>
<false/>
这里不清楚如何使用用户定义的设置。
【问题讨论】:
我不确定如何执行您的要求,但我很确定对于这个特定的键 (NSAppleScriptEnabled),您还可以使用字符串“YES”和“NO”,它会起作用。
【讨论】:
App Transport Security 键,请查看此答案:stackoverflow.com/questions/32390228/…
标签中包含布尔值的 plist 文件不再有效。
此解决方案有效:
向您的目标添加一个新的运行脚本构建阶段。放入:
if [ ${CONFIGURATION} = "Release" ]; then
/usr/libexec/PlistBuddy -c "Set :UIFileSharingEnabled NO" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
fi
所以在我的配置中,我在我的 plist 中将 UIFileSharingEnabled 设置为 YES 作为默认值,当我为 Release 构建时,会发生上述步骤并将其设置为 false。
【讨论】:
“用户定义设置”是什么意思...
如果您谈论的用户是您(换句话说,应用程序的开发人员),那么您可以将任何您想要的键放在那里,就像 Xcode 项目中的任何其他 plist 一样。
如果您所说的用户是您应用的最终用户,请不要尝试将他们的设置保存在您的 Info.plist 中。它是应用程序的一部分。虽然有时应用程序可以在 Mac 上更改自己的信息 plist,但通常不会,具体取决于应用程序的安装方式。在 iPhone 上这是不可能的,因为该应用程序是只读的。在任何一种情况下,更改 Info.plist 都会使您所做的任何应用签名无效。
如果您想更改最终用户设置,请使用 NSUserDefaults。
【讨论】: