我有一个多用户应用程序和一个字典数组,用于保存每个用户的信息。每个字典包含一个用户的信息。例如,我在每个用户词典中都有以下键。
userId
settings
在设置中,我有另一个包含键musicVolume
和language
的词典
我将这些密钥与以下代码一起使用
[settingsInfo setValue:[NSNumber numberWithInt:0] forKey:@"musicVolume"];
现在,像@"musicVolume"
这些keysName字符串遍布我的代码。所以我决定制作一个可以用来获取字符串的单例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直接创建变量。
答案 0 :(得分:0)
您可以选择const,#define,enum。但是你正在使用的词典的最佳方式。
答案 1 :(得分:0)
NSString *const kSettingsMusicVolume = @"musicVolume";
通过该声明,您将能够使用kSettingsMusicVolume
并获得代码完成。
如果将.m文件中的声明放在.h文件中,则可以事件hide
extern NSString *const kSettingsMusicVolume;
这样做的好处是
1.代码完成
2.如果您想更改实际密钥,只需在一个地方进行。
[settingsInfo setValue:[NSNumber numberWithInt:0] forKey:kSettingsMucicVolume];