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) andIDENTIFIER: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代碼