【问题标题】:xcode 4 complaining that a key is an 'undeclared identifier' for no reasonxcode 4无缘无故地抱怨密钥是“未声明的标识符”
【发布时间】:2012-03-16 00:07:14
【问题描述】:

请帮忙 - 这快把我逼疯了... 我有许多非常相似的代码行,但突然之间,Xcode 开始认为其中一些行是错误的,我无法构建我的应用程序。这是一些提取代码:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    cycleSettingsDate = [defaults objectForKey:kCycleSinceDateKey];
    cycleUnitFactor = [defaults boolForKey:kCycleUseMilesKey]? @"1.6" : @"1";
    runUnitFactor = [defaults boolForKey:kRunUseMilesKey]? @"1.6" : @"1";

    swimSettingsDate = [defaults objectForKey:kSwimSinceDateKey];

项目 kCycleSinceDateKey 是淡蓝色的,就好像它是我的头文件中声明的属性,如 cycleSettingsDate - 它不是。其他三个是棕色的,因为您希望钥匙是彩色编码的,它们工作得很好。只有 kCycleSinceDateKey 没有按预期工作。

我的头文件中有以下内容,与它相关的 plist 标识符完全匹配:

#define kCycleSinceDate @"cyclesincedate"
#define kSwimSinceDateKey @"swimsincedate"
#define kRunUseMilesKey    @"runusemiles"
#define kCycleUseMilesKey  @"cycleusemiles"

我已经退出了 Xcode,甚至重新启动了我的 mac,但 kCycleSinceDateKey 仍然用红色虚线下划线和同样的问题。有人有什么想法吗?

提前非常感谢...

【问题讨论】:

    标签: iphone ios xcode ios5 xcode4.2


    【解决方案1】:

    在您的代码中。您将其称为 kCycleSinceDateKey,在定义中您将其称为 kCycleSinceDate。

    【讨论】:

    • 我不敢相信我错过了 - 真是个傻瓜!非常感谢您敏锐的目光和极快的回复...
    • +1 以获得正确答案。除了最初的问题,我还发布了一些 const 建议...
    【解决方案2】:

    除了指出缺少密钥的答案之外,我通常在 .m 中定义我的常量。它更紧凑。见When to use static string vs. #define

    NSString * const kDefaultKeysCycleSinceDate = @"cyclesincedate";
    

    如果我需要在其他地方公开它(通常是您定义常量的原因),请在标题中执行此操作:

    extern NSString* const kDefaultKeysCycleSinceDate;
    

    还有:

    Defining a globally accessible string in Objective-C#define vs const and linking against frameworks

    我也会以相同的前缀 (kDefaultKeys...) 开始每个,所以自动完成会在您键入几个字符后显示所有可能的键...

    【讨论】:

      【解决方案3】:

      您声明了一个常量kCycleSinceDate 并改用kCycleSinceDateKey。请注意,声明的常量名称不以 Key 结尾。

      所以要么将 de declaration 更改为:

      #define kCycleSinceDateKey @"cyclesincedate" // Add Key
      

      或者把使用的那一行改成:

      cycleSettingsDate = [defaults objectForKey:kCycleSinceDate]; // Remove Key
      

      【讨论】:

      • 再次 - 我不敢相信我错过了 - 真是个傻瓜!非常感谢您敏锐的目光和极快的回复......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多