错误的“使用未声明的标识符'{IDENTIFIER}'”

时间:2013-11-02 00:25:34

标签: ios objective-c xcode

我一直在使用工具sbconstants从我的Xcode项目中的Storyboard Identifiers和Reuse Identifiers中创建外部常量。

我有#imported标题而不是包含这些常量的所有声明到项目的.pch文件中,并在调用performSegueWithIdentifier:和instantiateViewControllerWithIdentifier:等方法时使用这些常量。该项目可以完美地构建并且可以毫无问题地运行,但是Xcode会在找到这些常量的每次使用时记录错误,并显示消息“使用未声明的标识符......”

进一步使问题复杂化,似乎常量被索引,因为cmd点击它们会将我带到常量.m文件中的常量声明。此外,似乎Xcode没有记录使用这些常量的错误,除非我打开Xcode中使用它们的文件(即使用这些常量的文件没有任何错误归因于它们,直到我打开文件编辑)。

我认为常量本身的声明实际上没有任何问题(因为应用程序构建并运行完全正常),但显然Xcode认为存在问题。我试图积极清理我的项目并删除派生数据,希望能解决这个问题,但这并没有解决问题。有没有其他人遇到过这个或类似的问题,并找到了让Xcode正确识别常量的方法?

2 个答案:

答案 0 :(得分:1)

我也有类似的问题,通过清理项目,重新启动xCode并重建它来解决。您也可以尝试从预编译头中删除#import,并在需要时显式导入常量。

答案 1 :(得分:0)

我也遇到了同样的问题,但差别不大,今天我创建了一个名为 Constants.m 的Objective-C空文件,以及 Constants.h 文件是由我的同行(可能是)3个月前创建的。我试图在.m文件中声明的应用程序中使用kConstant,但它在我深入探索深层代码后找到了解决方案,后来给了我“未声明的Identifier kCrashlyticsId”。

解决方案:我在 Constants.m 文件中添加了一些值(NSString常量)。

.m文件

NSString *const kCrashlyticsId = @“somejunktextwhichIdidnotunderstood”; NSString *const kAppName = @“hereIhavemyAppName”;

Constants.h 中,我使用 extern 关键字引用该常量。

.h文件

extern NSString *const kCrashlyticsId; extern NSString *const kAppName;

最终解决了我的问题。

我尝试删除派生数据,退出xCode,重新启动系统以及所有这些,但所有这些对我没用。

希望这个解决方案可以帮助他人。

感谢。