可能重複:
Comparing Strings in Cocoa
Why is this code not recognising the NSString as being equal?爲什麼字符串比較返回true?
我有一個值的設定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]];
}
}
輸出到控制檯:
2012-03-28 23:11:41.799 (APPID) call:checkForHint
2012-03-28 23:11:41.800 (APPID) valueForKeyInDefaults:YES
我不明白爲什麼這個if語句心不是返回true .. 任何人誰可以幫助將不勝讚賞。我有一種感覺,因爲兩個字符串是不同的實例,碰巧有相同的值,但我不知道如何解決這個問題。
計數器的問題比較字符串:**爲什麼''==被用於*字符串* **比較搜索重複,你會發現他們..? 。在任何情況下,Objective-C *都沒有*操作符重載,這就是爲什麼'=='不能可靠地爲兩個NSObject的*值相等*工作。 – 2012-03-29 03:18:23
對不起,我真的不知道要搜索什麼。有比較字符串的具體方法嗎?謝謝 – bkbeachlabs 2012-03-29 03:20:03
搜索「compare nsstrring」或「equals nsstring」。 – 2012-03-29 03:20:53