2012-05-05 25 views
0

絕對令人困惑的問題,如果我試圖比較一個可變數組中的字符串從外部plist到字符串,相同的字符串拒絕承認它們是相同的。但是,如果我直接使用字符串創建可變數組,然後嘗試比較,則表示它們是相同的。將plist mutablearray中的字符串與相同的字符串進行比較。說不等於

一個例子是可能更容易:

NSString *dragDocPath = [documentsDirectory stringByAppendingPathComponent:@"draggable.plist"]; 

NSMutableArray *dragArray1 = [[NSMutableArray alloc] initWithContentsOfFile:dragDocPath]; 

NSString *s1 = [dragArray1 objectAtIndex:0]; //This is <string>skip</string> and checked with logging 

NSString *s2 = @"skip"; 


if (s1==s2) { //do this 
} 

else { //do the other important thing 
} 

沒有失敗,但它確實後者並拒絕看到S1 S2 ==

但是,我然後做

NSMutableArray *dragArray1 = [[NSMutableArray alloc] init]; 


[dragArray1 addObject:@"skip"]; 


NSString *s1 = [dragArray1 objectAtIndex:0]; 

NSString *s2 = @"skip"; 

和結果是好的。我在之前的測試項目中已經注意到了這一點,但是我認爲我做了明顯錯誤的事情,所以放棄了它。

我很困惑

我的plist文件是(他們每隔我所能找到的在他們的陣列工作)

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"  "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<array> 

<string>skip</string> 




</array> 
</plist> 

任何幫助,並指出明顯的缺陷等。 ..將不勝感激

我應該補充一點,我已經記錄在每一步的第n度,它說「第一跳過」,「第二跳過」和「跳過不等於跳過「...

編輯:問題解決感謝下面的答案。始終始終則應使用isEqualToString

如: 如果([S1 isEqualToString:S2]){....

回答

4

這不是你如何比較字符串,你實際上是比較指針(這是不同的)。你應該使用isEqualToString:

+0

謝謝!!我現在試試 –

+0

完美,謝謝 - 這讓我難倒了一個小時。我想我沒有注意到在某些情況下而不是在其他情況下工作的指針之間的區別,所以這是一個很好的教訓! –

+0

我認爲rdelmar值得支票 –

相關問題