gpt4 book ai didi

objective-c - 在 NSDictionary 中存储枚举值

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

我有一堆从服务器返回的 JSON 对象,我试图在我的 Objective-C 中对它们进行一些规范化。

我有这个枚举:

//VP_STATUS
typedef enum {
VP_STATUS_NA,
VP_STATUS_STEXP,
...
VP_STATUS_COUNT
} VP_STATUS;

我有一个函数将 JSON 对象(它是一个 NSMutableDictionary)中的字符串映射到这个枚举,然后我尝试在 NSMUtableDictionary 上设置一个键“状态”,如下所示:

VP_STATUS status = [myStringToEnumMappingFunction:[p objectForKey:@"status_label"]];
[p setValue:status forKey:@"status"];

但是,在 setValue:forKey 行我得到这个错误:

"Implicit conversion of VP_STATUS to id is disallowed with ARC"

我是否必须首先将状态转换为其他内容?如果是这样,那么就违背了使用定义为 VP_STATUS 的消息的目的,不是吗?

我是 objective-c 的新手,所以据我所知,我可能会完全错误地做这件事,并且愿意接受建议。

最佳答案

枚举就像数字的别名。 Objective-C 集合类只能存储对象引用。

你得到的错误是说一个值不能被转换成一个id(id是另一种写NSObject *的方式) , 一个对象指针。

如果你想在集合中存储一个值,你需要将它包装在类似 NSNumber 的东西中。如果您使用的是 LLVM,您可以使用以下示例执行此操作:

[p setValue:@(status) forKey:@"status"];

要再次比较它,您可以使用以下方法将其变回数字:

VP_STATUS status = [[p valueForKey:@"status"] integerValue];

关于objective-c - 在 NSDictionary 中存储枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17025685/

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