2

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

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

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

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

4

2 回答 2

1

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

于 2013-11-02T04:23:37.447 回答
0

我也遇到了同样的问题,但有一点不同,今天我创建了一个名为Constants.m的 Objective-C 空文件,而我的同伴(可能是)3 个月前创建了Constants.h文件。我试图在 .m 文件中声明的 App 中使用 kConstant,但它抛出了“未声明的标识符 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,重新启动系统等等,但所有这些都对我不起作用。

希望此解决方案对其他人有所帮助。

谢谢。

于 2015-06-17T06:59:55.600 回答