2

複数のクライアントで再利用されるアプリケーションを構築しています。アプリケーションの違いの 1 つは EventID です。これらのアプリケーションの新しいものを作成するたびにコードを変更したくありませんが、代わりに何らかの構成ファイルを使用してそこに ID を設定し、このファイルにアクセスするコードを同じに保ちます。これを行うのに最適な場所はどこですか (plist)? 可能であれば、コード内およびグローバルにこのキーにアクセスするにはどうすればよいですか?

4

1 に答える 1

4

アプリの Info.plist ファイルに設定を入れると、次のようにアクセスできます。

NSString *eventID = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"EventID"];

別のプロパティ リスト ファイル (たとえば、Settings.plist) に値を保存し、それをアプリの「バンドル リソースのコピー」ビルド フェーズに含めて、次のようにアクセスすることもできます。

NSString *settingsPath = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"];
NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:settingsPath];
NSString *eventID = [settings objectForKey:@"EventID"];

設定を読みやすくする 1 つの方法は、クラスを介してアクセスを提供することです。

@interface CNSSettings : NSObject

+ (NSString *)eventID;

@end

@implementation CNSSettings

+ (NSDictionary *)settingsDictionary
{
    static NSDictionary *_settingsDictionary = nil;

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSString *settingsPath = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"];
        _settingsDictionary = [NSDictionary dictionaryWithContentsOfFile:settingsPath];
    });

    return _settingsDictionary;
}

+ (NSString *)eventID
{
    return [[self settingsDictionary] objectForKey:@"EventID"];
}

@end

上記のクラスを使用すると、次のことを行うだけで済みます。

NSString *eventID = [CNSSettings eventID];
于 2013-10-31T05:19:36.887 に答える