请帮助 - 这让我发疯... 我有许多代码非常相似,但突然间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仍然用红色虚线和相同的问题加下划线。有没有人有任何想法?
非常感谢...
答案 0 :(得分:1)
在你的代码中。你将它称为kCycleSinceDateKey,在定义中你将它称为kCycleSinceDate。
答案 1 :(得分:1)
除了指出Key缺失的答案之外,我通常在.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 ...)开始每个,所以自动完成功能会在你键入几个字符后显示所有可能的键...
答案 2 :(得分:0)
您声明了常量kCycleSinceDate
并改为使用kCycleSinceDateKey
。请注意,声明的常量名称不以键结尾。
所以要么将de decaration改为:
#define kCycleSinceDateKey @"cyclesincedate" // Add Key
或者将其使用的行更改为:
cycleSettingsDate = [defaults objectForKey:kCycleSinceDate]; // Remove Key