创建自定义密钥路径iOS

时间:2012-11-10 02:40:02

标签: objective-c ios

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

  

userId

     

settings在设置中,我有另一个包含键musicVolumelanguage的词典

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

 [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直接创建变量。

2 个答案:

答案 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];