我是Objective-C和iOS开发的新手,我不确定我做得是否正确。总之,基本上我有一个Configs.list文件,它现在有两组密钥:Value(Customer:Generic和Short_Code:Default)。我希望所有类都能轻松访问这些数据,所以我创建了这些:
Configs.h
extern NSString * const CUSTOMER;
extern NSString * const SHORT_CODE;
@interface Configs
+ (void)initialize;
+ (NSDictionary *)getConfigs;
@end
Configs.m
#import "Configs.h"
NSString * const CUSTOMER = @"Customer";
NSString * const SHORT_CODE = @"Short_Code";
static NSDictionary *myConfigs;
@implementation Configs
+ (void)initialize{
if(myConfigs == nil){
NSString *path = [[NSBundle mainBundle] pathForResource:@"Configs" ofType:@"plist"];
settings = [[NSDictionary alloc] initWithContentsOfFile:path];
}
}
+ (NSDictionary *)getConfigs{
return settings;
}
@end
在测试文件test.m:上
NSLog(@"Customer: %@", [[Configs getConfigs] objectForKey:CUSTOMER]);
NSLog(@"Short Code: %@", [[Configs getConfigs] objectForKey:SHORT_CODE]);
问题是,这种方法有效,但我想知道是否有更好的方法。
我认为只要您的配置在执行过程中不发生更改,这就很好。如果是这样的话,您最好让singleton将您的配置公开为属性,这样您就可以做这样的事情:
[[Config shared] customer];
[[Config shared] setShortCode:@"CODE"];
您仍然可以从plist初始化配置,或者实现编码协议将其存储在NSUserDefaults中。