0

我有一个多用户应用程序和一个字典数组,用于保存每个用户的信息。每个字典都包含一个用户的信息。例如,我在每个用户词典中有以下键。

userId

settings在设置中,我有另一个带有键的字典musicVolumelanguage

我将这些键与以下代码一起使用

 [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];

我可以做到的一种方法是为设置创建一个结构或一个类,然后保留musicVolume它。但我想知道是否有办法在不创建类或严格的情况下做到这一点。直接用我们自己的 keyPath 创建一个变量。

4

2 回答 2

0

您可以选择 const、#define、枚举。但是您正在使用的字典中的最佳方式。

于 2012-11-10T03:04:59.867 回答
0

NSString *const kSettingsMusicVolume = @"musicVolume";
通过该声明,您将能够使用kSettingsMusicVolume并获得代码完成。

hide如果将声明放在 .h 文件中,则可以在 .m 文件中事件声明。
extern NSString *const kSettingsMusicVolume;

这样做的好处是
1. 代码完成
2. 如果你想改变实际的键,你只需要在一个地方做。

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

于 2012-11-10T04:46:01.363 回答