【问题标题】:In Objective-C, How Can I Make a Global Configuration That Is Accessible to All?在 Objective-C 中,如何进行所有人都可以访问的全局配置?
【发布时间】:2012-02-10 07:38:32
【问题描述】:

我是 Objective-C 和 iOS 开发的新手,我不确定我是否做得对。无论如何,基本上我有一个文件 Configs.plist,现在有两组 Keys:Value(Customer:Generic 和 Short_Code:Default)。我希望所有类都可以轻松访问这些数据,所以我创建了这些数据:

配置.h

 extern NSString * const CUSTOMER;
 extern NSString * const SHORT_CODE;

 @interface Configs
 + (void)initialize;
 + (NSDictionary *)getConfigs;
 @end

配置.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]);

问题是,这种方法有效,但我想知道是否有更好的方法来做到这一点。

【问题讨论】:

    标签: ios objective-c configuration global-variables plist


    【解决方案1】:

    我认为这很好,只要您的配置在执行期间没有改变。如果是这样,您最好使用单例将您的配置公开为属性,这样您就可以执行以下操作:

    [[Config shared] customer];
    [[Config shared] setShortCode:@"CODE"];
    

    您仍然可以从 plist 中初始化配置,或实施编码协议将其存储在 NSUserDefaults 中。

    【讨论】:

    • 谢谢你。我不太明白你的意思,但是,这是一个我需要阅读更多的主题。无论如何,是的,在执行过程中不会修改配置。配置基本上是预构建要求。
    • 是的,我很确定你的配置是可变的,所以我想给你一些关于如何处理可变配置的见解。但如果它是静态的,那么我认为您的解决方案非常好。
    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    相关资源
    最近更新 更多