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