私は客観的な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");
}
}
}
forループのif文までは完全に動作するようになりました。それは単に実行されません。なぜどんなアイデア?私はこれが簡単な修正だと確信していますが、私の人生のためにこれを理解することはできません。
ご協力いただければ幸いです!
両方のオブジェクトが文字列であることがわかっている場合は、より効率的であるため、 '-isEqualToString:'を使用する必要があります。 –
ありがとう、ロブ! – koo
明確にするために、同じテキストを含む2つの文字列オブジェクトを持つことができるという違いがあります。 '=='は、両側が同じオブジェクトであるかどうかを示します。それらが異なる(すなわち2つの)オブジェクトである場合、それらが何を含むか表現しているかにかかわらず、 '=='は偽と評価されます:それらは同じオブジェクトではありません。ある文字列オブジェクトに送信される 'isEqualToString:'メッセージは、同じオブジェクトであるか2つのオブジェクトであるかにかかわらず、同じテキストが他の文字列と同じかどうかを示します。 –