Can i modify Root.plist in settings bundle dynamically?

拈花ヽ惹草 提交于 2019-11-30 08:40:07

问题


I have a settings bundle in my app.. containing root.plist now i have a screen which contains a checkbox.. on pressing the check box i want to change the BOOL value for DefaultValue key of PSToggleSwitchSpecifier in the plist. Since its being done at runtime.. my question is that .. can the file be changed at runtime and if yes.. give an idea how to do it??

here is the plist:

    <plist version="1.0">
<dict>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>DefaultValue</key>
            <string></string>
            <key>Key</key>
            <string>Username</string>
            <key>Title</key>
            <string>Username</string>
            <key>Type</key>
            <string>PSTextFieldSpecifier</string>
        </dict>
        <dict>
            <key>DefaultValue</key>
            <string></string>
            <key>IsSecure</key>
            <true/>
            <key>Key</key>
            <string>Password</string>
            <key>Title</key>
            <string>Password</string>
            <key>Type</key>
            <string>PSTextFieldSpecifier</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSToggleSwitchSpecifier</string>    <-----toggleSwitch
            <key>Title</key>
            <string>Remember</string>
            <key>Key</key>
            <string>CheckBox</string>
            <key>DefaultValue</key>    <----- Default Value
            <false/>                   <---- want to change this value 
        </dict>
    </array>
    <key>Title</key>
    <string>Settings</string>
</dict>
</plist>

thank you in advance ;)


回答1:


Because the settings bundle resides inside your app's bundle, you cannot change it at runtime, only at compile-time.

You can, however, use NSUserDefaults to set the value at runtime, and the settings application will automatically reflect this. It will be saved elsewhere, though. You can just read it back the same way as you would do with the settings bundle, also through NSUserDefaults.

Note that you shouldn't read from the settings bundle directly, as it makes no sense. You should always fetch and set user defaults using NSUserDefaults. When the user makes a change in the settings application, NSUserDefaults will reflect this automatically. They will always be kept in sync.




回答2:


You can not modify files with the application bundle..



来源:https://stackoverflow.com/questions/6941272/can-i-modify-root-plist-in-settings-bundle-dynamically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!