bkb*_*abs -1 string equals objective-c
我在NSUserDefaults中将值设置为@"YES".当我运行这个方法时......
- (void) checkForHint {
NSLog(@"call:checkForHint");
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSLog(@"valueForKeyInDefaults:%@",[defaults valueForKey:@"giveHint"]);
if ([defaults valueForKey:@"giveHint"] == @"YES") {
NSLog(@"need to give hint");
// replace a letter at random
int i=0;
bool found = NO;
while (!found && i<NUM_CHARACTERS_IN_LEVEL_STRING) {
NSLog(@"searching at index %i",i);
if ([buttons objectAtIndex:i] && 32==[[levelSavedSolutionArray objectAtIndex:i] intValue]) {
found = YES;
}
i++;
}
i--;
// We need to select all the buttons at this unsolved space
[self buttonClicked:[buttons objectAtIndex:i]];
// update the entries in all selected buttons
[self keyAct:[[levelStringArray objectAtIndex:i] intValue]];
}
}
Run Code Online (Sandbox Code Playgroud)
控制台的输出是:
2012-03-28 23:11:41.799 (APPID) call:checkForHint
2012-03-28 23:11:41.800 (APPID) valueForKeyInDefaults:YES
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这个if语句不会返回true ..任何可以提供帮助的人都会非常感激.我有一种感觉,因为这两个字符串是碰巧具有相同值的不同实例,但我不知道如何解决这个问题.
Operation ==正在比较这种情况下的指针.显然,您正在比较两个不同的对象:@"YES"它是一个文字字符串和[defaults valueForKey:@"giveHint"]方法调用返回的对象.
如果您需要按内容使用比较字符串 [[defaults valueForKey:@"giveHint"] isEqualToString:@"YES"]