2011-04-09 89 views
0

找到我感到困惑的字符串(初學者的問題,恐怕):的Objective-C:比較正常的字符串,字符串NSMutableArrays

我有一個NSMutableArray的稱爲筆記本電腦。在索引位置1,我有一個對象,我認爲它是一個字符串。至少我把它放到這樣的陣列中:

[NoteBook replaceObjectAtIndex:1 withObject:@"x-x-x-x"]; 

到目前爲止這麼好。如果我把它放到UILabel中,它會在我的屏幕上顯示x-x-x-x。當我試圖比較這個字符串與其他字符串時,惡夢開始了。讓我們考慮一下,我不想在我的屏幕上顯示字符串x-x-x-x,而只是爲了空白。所以,我想我可以通過編寫此實現這一點:

NSString *tempDateString; 
tempDateString = [NSString stringWithFormat:@"%@",[NoteBook objectAtIndex:1]]; 

if (tempDateString == @"x-x-x-x") { 

     UISampleLabel.text = @""; 

    } 

出於某種原因,這是不行的,也就是說,即使在我的陣列的1位的字符串爲「XXX-X」,它仍然不設置我的UISampleLabel什麼也沒有。

我想我對@「」標記感到困惑。我什麼時候真的需要他們?爲什麼我不能簡單地編碼tempDateString = [NoteBook objectAtIndex:1];沒有格式化的東西?

任何幫助和建議將非常感謝!

回答

3

您需要isEqualToString比較字符串:

if ([tempDateString isEqualToString:@"x-x-x-x"]) { 
    UISampleLabel.text = @""; 
} 
+0

非常感謝,你救了我的一天! – 2011-04-09 09:11:25

+0

不客氣! – 2011-04-09 09:44:04

1

除了疑問,一直回答:

我爲什麼不能簡單的代碼tempDateString = [NoteBook objectAtIndex:1];沒有格式化的東西?

你可以。你爲什麼認爲你不能?

+1

你可以。但請記住,從objectAtIndex:1獲得的實例是一個autorelease對象。如果你想在方法外使用它,你必須保留它。 ;-) – 2011-04-09 17:41:24

+0

謝謝,但從'+ stringWithFormat:'返回的實例也是如此。此外,我並沒有要求我自己的利益 - 我問n.evermind爲什麼他**認爲'+ stringWithFormat:'在上面是必需的。他的回答可能會揭示我們可以幫助澄清的錯誤觀念。 – 2011-04-09 17:50:35

+0

感謝您的意見。其實,我仍然對這件事情感到困惑。我以爲我需要這個來表明我們正在處理一個字符串,而不是?如果我使用stringWithFormat聲明某些內容,是否有區別? – 2011-04-09 18:24:24