gpt4 book ai didi

objective-c - 如何有效地获取 NSDictionary 中键值的反向映射?

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:47 26 4
gpt4 key购买 nike

我正在将 NSString 对象映射到 NSDictionary 中的 NSNumber 对象,以便从 JSON 设置 enum 类型像这样的字符串:

typedef enum
{
XXEnumTypeA,
XXEnumTypeB,
XXEnumTypeC,
} XXEnumType;

...

@property (nonatomic, assign) XXEnumType enumType;

...

self.mapNSStringToEnumType =
@{
@"enumTypeA" : @(XXEnumTypeA),
@"enumTypeB" : @(XXEnumTypeB),
@"enumTypeC" : @(XXEnumTypeC),
};

...

self.enumType = [self.mapNSStringToEnumType[stringFromJSON] integerValue];

现在我想走另一条路,将 enum 值转换为字符串。我不想存储另一个具有反向映射的字典,我使用的解决方案涉及通过映射字典进行线性搜索以找到值,然后返回键。

在实践中,我的线性方法很好,性能和内存都不是问题,但从学术角度我很好奇是否有另一种我不知道的更有效的方法,或者可能是不同类型的保持双向映射的结构(确保所有值也都是唯一的)?

最佳答案

您可能想按照这些思路尝试一些东西:

#define S(x)    #x
#define TOS(x) @S(x)

然后:

typedef enum {
MyEnum_01
, MyEnum_02
} MyEnum ;

- (void) test {
NSLog(@"%@", TOS(MyEnum_01)) ;
NSLog(@"%@", TOS(MyEnum_02)) ;
}

关于objective-c - 如何有效地获取 NSDictionary 中键值的反向映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18091586/

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