美文网首页
swift实现App的Settings的设置-添加和读取项目的自

swift实现App的Settings的设置-添加和读取项目的自

作者: 苍眸之宝宝 | 来源:发表于2020-04-10 17:46 被阅读0次

1.使用场景

1.1项目中全局动态设置一些开关和值

        在项目开发过程中,我们项目会在各种环境对应的域名下运行;例如开发人员使用的内部域名、测试人员使用的测试域名、线上环境的正式域名;如果在项目中用一个字符串常量对各种环境下的域名进行表示,每次更换环境域名,我们就不可避免的需要修改这个常量字符串,并进行打包。
        那么,怎样才能打包一次,可以在各种环境域名下进行动态切换呢?
        关于上述问题的通用的有两种解决方案:第一种是在项目内进行动态选择;第二种是在系统的设置界面下的对应App应用中进行动态选择。


        我们今天的主题是第二种解决方案。

image.png

2.设置步骤

2.1添加一个Settings.bundle文件夹

image.png

2.2设置Root.plist文件中的值

        Group设置一个组,在这个组的下边的item,都属于这个组;Text Field Item组中的文本框;Toggle Switch Item开关;Slider Item滑块;Multi Value Item枚举单项选择列表。


image.png

        这些Item的key和value如下图设置:


image.png

2.3Root.list的代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>StringsTable</key>
    <string>Root</string>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
            <key>Title</key>
            <string>其他设置</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSToggleSwitchSpecifier</string>
            <key>Title</key>
            <string>开关</string>
            <key>Key</key>
            <string>other_settings_switch</string>
            <key>DefaultValue</key>
            <true/>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSSliderSpecifier</string>
            <key>Key</key>
            <string>other_settings_slider</string>
            <key>DefaultValue</key>
            <real>0.5</real>
            <key>MinimumValue</key>
            <integer>0</integer>
            <key>MaximumValue</key>
            <integer>1</integer>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
            <key>Title</key>
            <string>服务器设置</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSMultiValueSpecifier</string>
            <key>Title</key>
            <string>选择服务器</string>
            <key>Key</key>
            <string>existing_server</string>
            <key>DefaultValue</key>
            <integer>0</integer>
            <key>Values</key>
            <array>
                <integer>0</integer>
                <integer>1</integer>
            </array>
            <key>Titles</key>
            <array>
                <string>正式服务器</string>
                <string>测试服务器</string>
            </array>
        </dict>
        <dict>
            <key>DefaultValue</key>
            <string></string>
            <key>Type</key>
            <string>PSTextFieldSpecifier</string>
            <key>Title</key>
            <string>自定义服务器</string>
            <key>Key</key>
            <string>custom_server</string>
        </dict>
    </array>
</dict>
</plist>

3完成系统设置修改

        设置-》App项目-》自定义设置


image.png

4代码中获取对应item的值

        //UserDefaults类,提供了一个与系统进行交互的编程接口。
        //该对象可以保存、恢复应用程序相关的偏好设置,配置数据等。
        let userDefaults = UserDefaults.standard
        
        //通过在Root.plist属性列表文件中,设置的键名,读取对应的自定义的域名。
        let article = userDefaults.object(forKey: "custom_server")
        //以同样的方式,根据键名,读取布尔值。
        let visible = userDefaults.object(forKey: "other_settings_switch")
        //继续读取通过滑杆设置的参数值
        let value = userDefaults.object(forKey: "other_settings_slider")
        
        //在控制台分别输出三个参数值
        print("article:\(String(describing: article))")
        print("visible:\(String(describing: visible))")
        print("value:\(String(describing: value))")

相关文章

网友评论

      本文标题:swift实现App的Settings的设置-添加和读取项目的自

      本文链接:https://www.haomeiwen.com/subject/fkdrmhtx.html