【问题标题】:Reference to enum is ambiguous objective-c对枚举的引用是模棱两可的objective-c
【发布时间】: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 ambiguousReference 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


【解决方案1】:

更改导入
#import "SwipeView.h"

@import SwipeView;

为我工作

【讨论】:

  • 我的课程在一个模块(子项目)中,所以我尝试导入 @import MainModule.Folder 我的视图所在的位置而不是 .h 实现,它有效,谢谢!
  • 它适用于我在 FBSDKCoreKit 4.28.0 中的 FBSDKLoginManager
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 2010-11-18
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多