2010-02-22 133 views
1

我的代碼:爲什麼兩個相同的字符串測試不等?

stringFromRecievedData = 
    [[NSString alloc]initWithData:_data1 encoding:NSUTF8StringEncoding]; 

if (![stringFromRecievedData isEqualToString:lastStringFromRecievedData]) { 
    [lastStringFromRecievedData setString: stringFromRecievedData]; 

我得到同樣的「不等於」結果,即使在即使是相同的數據,每次第二廿四...

這是比較正確的方法他們倆?

謝謝。

+0

請說明你在哪裏以及如何定義'lastStringFromReceivedData'。 – 2010-02-22 17:00:32

回答

4

如果lastStringFromRecievedDataNSString(或子類如NSMutableString)的實例,那麼這是比較兩個字符串的正確方法。在這種情況下,別的東西可能會導致你的字符串不相等。

但是,它看起來像lastStringFromRecievedData是一個其他的對象,因爲你打電話setString:就可以了。如果是這種情況,您需要首先從該對象獲取字符串。

stringFromRecievedData = 
    [[NSString alloc]initWithData:_data1 encoding:NSUTF8StringEncoding]; 

// Assuming 'string' is the function to get the string from 'setString:' below 
NSString *otherString = [lastStringFromRecievedData string]; 

if (![stringFromRecievedData isEqualToString:otherString]) { 
    [lastStringFromRecievedData setString: stringFromRecievedData]; 
+0

lastStringFromRecievedData是NSMutableString- 所以你建議使用[lastStringFromRecievedData string]? – Tiger 2010-02-22 18:43:16

+0

不,如果它是'NSMutableString',那麼比較就可以工作。這些字符串中有什麼樣的數據? – 2010-02-22 18:47:44

+0

該數據來自網絡響應, 我得到這個工作的唯一方法是,如果我使用接收到的字符串上的掃描器將其掃描到一個新的字符串中,那麼比較成功。 我認爲有關於字符串格式的東西? – Tiger 2010-02-22 19:06:39

0

如果你正在做的是尋找,以確保您NSMutableString相當於另一個NSString,爲什麼不這樣做:

lastStringFromRecievedData = [stringFromRecievedData mutableCopy]; 

或者:

[lastStringFromRecievedData setString:stringFromRecievedData]; 

結束結果將是相同的。

+0

你寫的正是我所做的從第一位。 重新閱讀問題 - 問題是當我重新創建stringFromRecievedData並嘗試查明它們是否相等時 - 如果它們不是 - 它意味着我收到了新的數據。 這兩個字符串在日誌上都是相同的 - 但我得到的是他們不等於的保護 - 這是問題。 – Tiger 2010-02-23 04:13:27

+0

我從數據中獲取一個字符串,我的目的是查明我是否已經得到了這個字符串。 – Tiger 2010-02-23 04:16:03

相關問題