iOS Ant

Config 好用的iOS的静态配置读取工具

2016-10-18  本文已影响22人  陈小翰

Config

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

SUPORT FILE TYPE

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中的值

可以通过使用符号.来往下层抓取数据
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>

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是一个工具,可以将配置文件中的配置信息到一个 NSArray 或 NSDictionary。

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

安装

下载代码,将项目中的 Config_Lib 文件夹复制到你的项目中

使用

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

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

获取key中的值

可以通过使用符号.来往下层抓取数据
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");

文件与文件的连接

如果在配置文件中的某一个key对应的value是另一个配置文件的内容,那么,在不同的文件类型中,配置的规则如下

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>

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的用法大致相同,只是写法有些特殊,需要引用另一个配置文件的内容,value就必须带有 IDENTIFIER:$subtree 后面用/隔开 文件名称和resolver名称,文件名是必须的,没有填写resolver的就默认使用默认的resolver

定义 IDENTIFIER

你可以在ConfigConstan.h中修改特殊标志来改变自己的写作规范

PS:

如果还搞不懂,请review demo代码

上一篇 下一篇

猜你喜欢

热点阅读