2010-09-12 153 views
0

我想在iphone上比較兩個字符串,但是IF語句總是爲false。這裏是我的代碼:比較iPhone上的字符串失敗?

NSLog([[UIDevice currentDevice]uniqueIdentifier]); 
if ([[[UIDevice currentDevice]uniqueIdentifier] compare:[[NSUserDefaults standardUserDefaults] valueForKey:@"id"]] == NSOrderedSame) { 
    //OK 
    NSLog("Do stuff if equal"); 
} else { 
    // Not OK 
    NSLog("Do stuff if not equal"); 
} 

輸出始終

*** UDID *** (<- my device's UDID) 
Do stuff if not equal 

我在做什麼錯?

謝謝! 伊凡

+0

確定它們是一樣的嗎?做一個'NSLog()'並確保。 – BoltClock 2010-09-12 10:29:58

+0

是的,因爲我之前將UDID存儲在該「id」值中。 – friedkiwi 2010-09-12 11:30:11

回答

2

嘗試使用stringForKey:代替valueForKey:isEqualToString:而不是compare: ... == NSOrderedSame

+0

這解決了這個問題!謝謝! – friedkiwi 2010-09-12 11:30:32

+0

使用isEqualToString:而不是比較:不太可能解決問題;主要區別在於比較:做一個(非文字的)Unicode字符串比較,它比較慢但是「正確」。 – 2010-09-12 13:53:38

+0

我知道,修正是將'valueForKey:'改爲'stringForKey:','isEqualToString:'而不是'compare:'只是因爲我認爲在這種情況下使用它更好/更容易。 – 2010-09-12 13:57:39