Xcode'使用未声明的标识符'错误但存在变量

时间:2015-02-07 17:42:15

标签: ios objective-c cocoa-touch

我正在为xcode项目添加跟踪功能。在我的ViewController.m中,我为已经声明的变量“使用未声明的标识符”收到错误。

ViewController.m中的

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    self.analyticsViewEventBundle = [[AnalyticsController sharedAnalyticsController] publishScreenLoadStartedWithScreenName:AnalyticsControllerScreenName_ScreenStyle existingViewEventBundle:self.analyticsViewEventBundle];
}

以上生成use of undeclared identifier 'AnalyticsControllerScreenName_ScreenStyle'。但是,如果我将该片段更改为AnalyticsControllerScreenName_MyStore则没有错误。

如果我搜索XCode,我会看到两行在正确的AnalyticsController.m文件中彼此相邻。这是一个例子:

typedef NS_ENUM(NSInteger, AnalyticsControllerScreenName) {
    AnalyticsControllerScreenName_MyStore, 
    AnalyticsControllerScreenName_ScreenStyle,               
};

我需要做些什么才能使用AnalyticsControllerScreenName_ScreenStyle

更新:

我删除了逗号,但仍然收到错误。

typedef NS_ENUM(NSInteger, AnalyticsControllerScreenName) {
    AnalyticsControllerScreenName_MyStore, 
    AnalyticsControllerScreenName_ScreenStyle               
};

更新 问题最终是我的AnalyticsController的两个副本以某种方式加载到项目中,而Target导航器中不可见的是正在使用的那个。我删除了该文件,清理并构建了一切,之后一切正常。

2 个答案:

答案 0 :(得分:2)

在AnalyticsControllerScreenName_ScreenStyle之后删除逗号。

试试这个,它对我有用

typedef enum{
    AnalyticsControllerScreenName_MyStore, 
    AnalyticsControllerScreenName_ScreenStyle               
} AnalyticsControllerScreenName;

答案 1 :(得分:-1)

您的枚举被定义为

typedef NS_ENUM(NSInteger, AnalyticsControllerScreenName) {
    AnalyticsControllerScreenName_MyStore, 
    AnalyticsControllerScreenName_ScreenStyle,               
};

问题是AnalyticsControllerScreenName_ScreenStyle之后的逗号告诉编译器将指定另一个元素,但是你没有提供一个元素。要解决此问题,请执行以下操作:

typedef NS_ENUM(NSInteger, AnalyticsControllerScreenName) {
    AnalyticsControllerScreenName_MyStore, 
    AnalyticsControllerScreenName_ScreenStyle               
};