【问题标题】:iOS run script updates the settings root.plist but changes not reflecting in settingsiOS 运行脚本更新设置 root.plist 但更改未反映在设置中
【发布时间】:2014-07-15 19:42:16
【问题描述】:

我有一个 iOS 应用程序,其中有一个设置包。 root.plist 是:

当我手动更改 Item6>Titles>Item0 的值并运行它时,它反映了应用程序的设备设置页面中的更改。

现在,我做了一个运行脚本来设置这个字段的构建版本

build=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" 
${PROJECT_DIR}/${INFOPLIST_FILE}`
/usr/libexec/PlistBuddy "$SRCROOT/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:6:Titles:0 $build"

Root.plist 中的 item 的指定值被更改(通过 Xcode 可以看到) 但它似乎没有反映在设备上应用程序的设置中。

知道为什么吗?这个奇怪的问题有什么解决办法吗?我错过了什么吗?

【问题讨论】:

    标签: ios objective-c xcode settings.bundle run-script


    【解决方案1】:

    Root.plist 允许您指定默认值。仅在设置应用程序(或以编程方式访问 NSUserDefaults 时)使用默认值,只要没有以编程方式或由用户设置属性的 real 值。一旦设置了一个值(您提到过,您手动设置版本以进行测试),默认值将被忽略。

    只需删除您的应用(设置也将被删除)并重新启动它。设备上的设置应用程序将显示您的新默认值。

    【讨论】:

    • 当然会,一旦应用程序被删除。但我不希望用户每次有新版本时都删除并重新安装应用程序
    • 这就是为什么在 Root.plist 中设置属性的默认值是错误的方法。每次启动您的应用程序时,您都必须更新此 NSUserDefaults 属性。我只是想回答你的问题,为什么会这样。 ;) 此行为无法修复,因为它按设计工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多