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