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