Wenn Sie den Operator ==
verwenden, vergleichen Sie Zeigerwerte. Dies funktioniert nur, wenn die Objekte, die Sie vergleichen, genau dasselbe Objekt sind, an der gleichen Speicheradresse. Zum Beispiel wird dieser Code These objects are different
zurückkehren, denn obwohl die Saiten gleich sind, sie an verschiedenen Orten im Speicher abgelegt sind:
NSString* foo = @"Foo";
NSString* bar = [NSString stringWithFormat:@"%@",foo];
if(foo == bar)
NSLog(@"These objects are the same");
else
NSLog(@"These objects are different");
Wenn Sie Strings vergleichen, Sie wollen in der Regel den Textinhalt der Saiten zu vergleichen, anstatt ihre Zeiger, so sollten Sie die -isEqualToString:
Methode von NSString
. Dieser Code wird These strings are the same
zurück, weil sie den Wert der String-Objekte vergleicht, anstatt ihre Zeigerwerte:
NSString* foo = @"Foo";
NSString* bar = [NSString stringWithFormat:@"%@",foo];
if([foo isEqualToString:bar])
NSLog(@"These strings are the same");
else
NSLog(@"These string are different");
Zum Vergleich beliebigen Objective-C-Objekte Sie die allgemeinere isEqual:
Methode der NSObject
verwenden sollten. -isEqualToString:
ist eine optimierte Version von -isEqual:
, die Sie verwenden sollten, wenn Sie beide Objekte NSString
Objekte kennen.
- (void)CheckKeyWithString:(NSString *)string
{
//foreach key in NSMutableDictionary
for(id key in dictobj)
{
//Check if key is equal to string
if([key isEqual:string])
{
//do some operation
}
}
}
hervorragend .. vielen Dank Rob .. es hat funktioniert :) – suse