0

マルチユーザーアプリケーションと、各ユーザーの情報を保持するための辞書の配列があります。各辞書には、1人のユーザーの情報が含まれています。たとえば、ユーザーごとの辞書に次のキーがあります。

userId

settingsmusicVolume設定内に、キーとキーを備えた別の辞書がありますlanguage

私はこれらのキーを次のコードで使用します

 [settingsInfo setValue:[NSNumber numberWithInt:0] forKey:@"musicVolume"];

今、これらのkeysName文字列@"musicVolume"は私のコード全体に広がっていました。そこで、文字列をフェッチするために使用できるシングルトンUtilityClassを作成することにしました。今のコードは次のようになります

UtilityClass* shared = [UtilityClass sharedInstance]
[settingsInfo setValue:[NSNumber numberWithInt:0] forKey:shared.musicVolume];

しかし、私がやりたいのは、つまり、異なるkeyPathを使用した音楽のボリュームです。

[settingsInfo setValue:[NSNumber numberWithInt:0] forKey:shared.settings.musicVolume];

私がそれを行うことができる1つの方法は、設定用の構造体またはクラスを作成し、それを維持musicVolumeすることです。しかし、クラスやストリクトを作成せずにそれを行う方法があるかどうか疑問に思いました。独自のkeyPathを使用して変数を直接作成します。

4

2 に答える 2

0

const、#define、enumを選択できます。しかし、あなたが使用している辞書の最良の方法。

于 2012-11-10T03:04:59.867 に答える
0

NSString *const kSettingsMusicVolume = @"musicVolume";
kSettingsMusicVolumeその宣言を使用すると、コードを使用して補完 することができます。

hideこれを.hファイルに配置すると、.mファイルで宣言をイベント化できます。
extern NSString *const kSettingsMusicVolume;

これの利点は次のとおりです
。1。コードの完了
2.実際のキーを変更する場合は、1か所で変更するだけです。

[settingsInfo setValue:[NSNumber numberWithInt:0] forKey:kSettingsMucicVolume];

于 2012-11-10T04:46:01.363 に答える