Config 好用的iOS的靜態(tài)配置讀取工具

Config

Config is a tool that can convert the configuration information of the configuration file to a NSDictionary or NSArray.

SUPORT FILE TYPE

  • xml
  • json
  • plist

INSTALL

Download the code, copy the Config_Lib folder in the demo to your project

USE

///ResolverClass can be nil , and it will use default resolver
[ConfigManager buildUpWithFileName:@"testBasicConfig.xml" ResolverClass:nil];

NSLog(@"%@",ConfigInfo());

獲取key中的值

可以通過(guò)使用符號(hào).來(lái)往下層抓取數(shù)據(jù)
xml data:

<config>
    <ccc>
        <A>5</A>
        <cache>
            <volumne>98</volumne>
            <isTestMode>10</isTestMode>
        </cache>
        <session  import = "testBasicConfig.json"></session>
    </ccc>
</config>

code:

id data = ConfigInfo_CatchValueByKey(@"ccc.A");

RESOLVER

Sometimes, we need to use a special analytical method to resolve our configuration data, so you can also use your own definition of analytical methods.
At this time, you need to create a class that inherits from the BaseResolver, and implements the resolveWithFileName:orresolveWithFilePath:to return a result you expect

 [ConfigManager buildUpWithFileName:@"testBasicConfig.xml" ResolverClass:[AResolver class]];
 NSLog(@"%@",ConfigInfo());

AResolver:

@implementation AResolver
+(id)resolveWithFileName:(NSString *)fileName{
    return @{@"test":@"hello world ~~~",@"fileName":fileName};
}
@end

IMPORT

If one of the key corresponding to the value in the configuration file is the content of the other configuration file, then, in the different file types, the configuration rules are as follows:

xml

example:

<?xml version="1.0" encoding="UTF-8" ?>
<config>
    <ccc>
        <A>5</A>
        <cache>
            <volumne>98</volumne>
            <isTestMode>10</isTestMode>
        </cache>
        <session  import = "testBasicConfig.json"></session>
    </ccc>
    <yy >111</yy>
    <bb >test</bb>
    <filter  import = "testBasicConfig.plist" resolver = "AResolver"></filter>
    <filter  import = "testBasicConfig.plist" resolver = "AResolver"></filter>
    <filter  import = "testBasicConfig.plist"></filter>
    <filter  import = "testBasicConfig.plist"></filter>
    <filter  import = "testBasicConfig.plist"></filter>
    
    <filter1>98</filter1>
    <filter1>97</filter1>
    <filter1>96</filter1>
    <filter1>95</filter1>
    
</config>
  • the outermost layer using rulekey:config, and then fill in the contents of the configuration
  • When a key value need to import another file, then you can use the IDENTIFIER:import (the specified file name, including file type suffix) and IDENTIFIER:resolver (designated resolver, fill in the name of the class)

json & plist

example:

{
    "A": {
        "value": "5"
    },
    "cache": {
        "value": {
            "volumne": 98,
            "isTestMode": true
        }
    },
    "session":"$subtree/import:testBasicConfig.plist"
    ,
    "se":[
          {
          "B":"$subtree/import:testBasicConfig.plist",
          "C":"cccccc",
          "D":"dddddd"
          },
          "AAA",
          "$subtree/import:testBasicConfig.plist/resolver:TGResolver"
         ]
}

Roughly the same with the usage of XML is somewhat special, need to refer to another configuration file, value must have IDENTIFIER:$subtree and user '/' separated file name and resolver name, the file name is a must. If within the resolver,it will default to use the default resolver.

Definition of IDENTIFIER

You can change your writing specifications by modifying the special flag in the ConfigConstan.h

PS:

If you still do not understand, please review code.

Config

Config是一個(gè)工具,可以將配置文件中的配置信息到一個(gè) NSArray 或 NSDictionary。

支持的配置文件的文件類型

  • xml
  • json
  • plist

安裝

下載代碼,將項(xiàng)目中的 Config_Lib 文件夾復(fù)制到你的項(xiàng)目中

使用

///ResolverClass can be nil , and it will use default resolver
[ConfigManager buildUpWithFileName:@"testBasicConfig.xml" ResolverClass:nil];

NSLog(@"%@",ConfigInfo());

獲取key中的值

可以通過(guò)使用符號(hào).來(lái)往下層抓取數(shù)據(jù)
xml data:

<config>
    <ccc>
        <A>5</A>
        <cache>
            <volumne>98</volumne>
            <isTestMode>10</isTestMode>
        </cache>
        <session  import = "testBasicConfig.json"></session>
    </ccc>
</config>

code:

id data = ConfigInfo_CatchValueByKey(@"ccc.A");

文件與文件的連接

如果在配置文件中的某一個(gè)key對(duì)應(yīng)的value是另一個(gè)配置文件的內(nèi)容,那么,在不同的文件類型中,配置的規(guī)則如下

xml

例子:

<?xml version="1.0" encoding="UTF-8" ?>
<config>
    <ccc>
        <A>5</A>
        <cache>
            <volumne>98</volumne>
            <isTestMode>10</isTestMode>
        </cache>
        <session  import = "testBasicConfig.json"></session>
    </ccc>
    <yy >111</yy>
    <bb >test</bb>
    <filter  import = "testBasicConfig.plist" resolver = "AResolver"></filter>
    <filter  import = "testBasicConfig.plist" resolver = "AResolver"></filter>
    <filter  import = "testBasicConfig.plist"></filter>
    <filter  import = "testBasicConfig.plist"></filter>
    <filter  import = "testBasicConfig.plist"></filter>
    
    <filter1>98</filter1>
    <filter1>97</filter1>
    <filter1>96</filter1>
    <filter1>95</filter1>
    
</config>
  • 最外層使用 rulekey:config ,然后在里面填寫配置內(nèi)容
  • 當(dāng)一個(gè)key的value需要引入另一個(gè)文件的內(nèi)容,此時(shí),可以使用 IDENTIFIER:import (指定文件名,包含文件類型的后綴名)和 IDENTIFIER:resolver(指定resolver的類,填寫類名)

json & plist

例子:

{
    "A": {
        "value": "5"
    },
    "cache": {
        "value": {
            "volumne": 98,
            "isTestMode": true
        }
    },
    "session":"$subtree/import:testBasicConfig.plist"
    ,
    "se":[
          {
          "B":"$subtree/import:testBasicConfig.plist",
          "C":"cccccc",
          "D":"dddddd"
          },
          "AAA",
          "$subtree/import:testBasicConfig.plist/resolver:TGResolver"
         ]
}

與xml的用法大致相同,只是寫法有些特殊,需要引用另一個(gè)配置文件的內(nèi)容,value就必須帶有 IDENTIFIER:$subtree 后面用/隔開(kāi) 文件名稱和resolver名稱,文件名是必須的,沒(méi)有填寫resolver的就默認(rèn)使用默認(rèn)的resolver。

定義 IDENTIFIER

你可以在ConfigConstan.h中修改特殊標(biāo)志來(lái)改變自己的寫作規(guī)范

PS:

如果還搞不懂,請(qǐng)review demo代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容