【发布时间】:2015-08-09 06:11:43
【问题描述】:
我在另一个文件下面定义了一个 NS_ENUM:
typedef NS_ENUM (NSUInteger, LinkPlatformType){
LinkPlatformTypeEmail = 1,
LinkPlatformTypeFacebook,
LinkPlatformTypeGoogle
};
当我尝试做一个开关盒时:
- (void)linkWithType:(LinkPlatformType)linkType {
switch (linkType) {
case LinkPlatformTypeGoogle:
break;
case LinkPlatformTypeFacebook:
break;
default:
break;
}
}
我收到构建错误:Reference to LinkPlatformTypeGoogle is ambiguous。 Reference to LinkPlatformTypeFacebook is ambiguous.
更新:
我定义枚举的文件define.h在例如Target 1中,并且有一个Class StoreClass可以导入这个define.h文件。我已经将 StoreClass.m Target Membership 设置为多个目标:Target 1 和 Target 2。所以在我这样做之后,Reference to LinkPlatformTypeFacebook is ambiguous 出现了。会是这个原因吗?
【问题讨论】:
-
您是否尝试为枚举使用不同的命名?我最好的猜测是它可能只是一个命名冲突,编译器不知道要引用什么。
-
我在新项目中尝试了与您相同的代码。我没有收到任何错误,只是为了验证您是否导入了文件?是的,我将 NS_ENUM 放在头文件的定义.h 文件中。
-
@Vlad 我检查了两次。没有命名冲突。我在我的项目中只定义了一个。
-
@RahulShirphule 我确实导入了文件,否则将是另一种警告。
-
也许尝试遍历开关中所有三个可能的值,你只处理了三分之二(虽然我看到你有默认值)...
标签: ios objective-c iphone enums