确保Objective-C Dictionary键在整个应用程序中保持一致的最佳实践?

时间:2014-07-07 19:58:38

标签: objective-c dictionary

如果我使用某些值定义了一个字典,我希望将其传递给另一个类。我应该将密钥设为常量,以便我可以在其他类中使用它们而不必担心我是否正确键入它。在这种情况下,常见的是什么?

2 个答案:

答案 0 :(得分:1)

如果允许所有允许的字典键常量,您可以使用相应的字段创建自定义类,并传递该类而不是字典。如果需要通过编译时不可用的符号访问字段,那么您的类的用户也可以使用键值编程来检索字段值。

如果您因某些其他原因必须传递字典,则可以使用密钥生成enum,并使用enum添加前缀@以将其包装到NSNumber个对象中自动:

enum {
    kFirstKey
,   kSecondKey
,   kThirdKey
};
...
NSDictionary *dict = @{
    @(kFirstKey) : @"Quick"
,   @(kSecondKey) : @"brown"
    @(kThirdKey) : @"fox"
};

答案 1 :(得分:-1)

您可以使用enum并使用NSNumber来设置密钥。

一些头文件:

typedef enum {
    DictionaryKeyOneKey,
    DictionaryKeyAnotherKey
} DictionaryKey;

您可以定义方便方法或宏来装箱钥匙:

#define boxKey(k) [NSNumber numberWithInt:k]

然后在客户端代码中:

NSMutableDictionary *dict;
...
NSObject *object = [dict objectForValue:boxKey(DictionaryKeyOneKey)];
[dict setObject:object forKey:boxKey(DictionaryKeyAnotherKey)];