gpt4 book ai didi

objective-c - typedef 枚举类型作为 NSDictionary 的键?

转载 作者:太空狗 更新时间:2023-10-30 03:15:37 28 4
gpt4 key购买 nike

是否不允许枚举作为 NSMutableDictionary 的键?

当我尝试通过以下方式添加到字典时:

[self.allControllers setObject:aController forKey:myKeyType];

我得到错误:

error: incompatible type for argument 2 of 'setObject:forKey:'

通常,我使用 NSString 作为我的键名,它不需要强制转换为“id”,但为了消除错误,我已经这样做了。在这里强制转换是正确的行为还是枚举作为键是个坏主意?

我的枚举定义为:

typedef enum tagMyKeyType
{
firstItemType = 1,
secondItemType = 2
} MyKeyType;

字典是这样定义和正确分配的:

NSMutableDictionary *allControllers;

allControllers = [[NSMutableDictionary alloc] init];

最佳答案

不过您可以将枚举存储在 NSNumber 中。 (枚举不就是整数吗?)

[allControllers setObject:aController forKey:[NSNumber numberWithInt: firstItemType]];

在 Cocoa 中,经常使用 const NSStrings。在 .h 中,您可以声明如下内容:

NSString * const kMyTagFirstItemType;
NSString * const kMyTagSecondtItemType;

然后在 .m 文件中放置

NSString * const kMyTagFirstItemType = @"kMyTagFirstItemType";
NSString * const kMyTagSecondtItemType = @"kMyTagSecondtItemType";

然后您可以将其用作字典中的键。

[allControllers setObject:aController forKey:kMyTagFirstItemType];

关于objective-c - typedef 枚举类型作为 NSDictionary 的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1014314/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com