我對客觀的c和可可很新,但是我花了很多時間在C++上,而且我從來沒有遇到過這個問題。如果沒有運行語句
我的應用程序需要通過名稱來識別安裝的磁盤。這裏是代碼:
//this code will run whenever a new disk is mounted to the computer
-(void) scanForKindle:(NSNotification *) notification
{
NSMutableArray *mountedDisks = [[NSMutableArray alloc] init];
mountedDisks = [workspace mountedRemovableMedia];
NSMutableArray *ebookDevices = [[NSMutableArray alloc] init];
NSDictionary *fileAttributes = [[NSDictionary alloc] init];
int currentDisk;
for (currentDisk = 0; currentDisk < [mountedDisks count]; currentDisk++)
{
NSLog(@"Name: %@", [mountedDisks objectAtIndex:currentDisk]);
if ([mountedDisks objectAtIndex:currentDisk] == @"/Volumes/Kindle")
{
NSLog(@"Kindle has been identified");
}
}
}
我已經得到了一切工作完美的if語句在for循環。它不會運行。任何想法爲什麼?我相信這是一個簡單的解決方法,但我無法弄清楚這一點爲我的生活。
任何幫助將不勝感激!
如果你知道這兩個對象都是字符串,你應該使用'-isEqualToString:',因爲它更高效。 –
謝謝,羅布! – koo
澄清它的區別在於,您可以有兩個包含相同文本的字符串對象。 '=='告訴你雙方是否是同一個對象;如果它們是不同的(即兩個)對象,那麼無論它們包含或表示什麼,'=='都將評估爲false:它們不是同一個對象。發送給一個字符串對象的'isEqualToString:'消息將告訴你它是否包含與另一個字符串相同的文本,而不管它們是相同的對象還是兩個對象。 –