==
işlecini kullandığınızda, işaretçi değerlerini karşılaştırıyorsunuz. Bu sadece karşılaştırma yaptığınız nesneler aynı bellek adresinde aynı nesne olduğunda çalışır. Eğer dizeleri karşılaştırdığımızda
NSString* foo = @"Foo";
NSString* bar = [NSString stringWithFormat:@"%@",foo];
if(foo == bar)
NSLog(@"These objects are the same");
else
NSLog(@"These objects are different");
, genellikle dizeleri metinsel içerik karşılaştırmak yerine istiyorum: dizeleri aynı olmasına rağmen, onlar bellekte farklı yerlerde saklanır çünkü Örneğin, bu kod These objects are different
dönecektir onların işaretçileri, yani NSString
'un -isEqualToString:
yöntemini kullanmalısınız. o dize nesnelerin değerini karşılaştırır bu kod yerine kendi işaretçi değerlerinden daha These strings are the same
döndürür:
NSString* foo = @"Foo";
NSString* bar = [NSString stringWithFormat:@"%@",foo];
if([foo isEqualToString:bar])
NSLog(@"These strings are the same");
else
NSLog(@"These string are different");
karşılaştırmak keyfi Objective-C Eğer NSObject
daha genel isEqual:
yöntemi kullanmalısınız nesneleri. -isEqualToString:
, her iki nesnenin de NSString
nesnesi olduğunu bilmeniz gereken, -isEqual:
'un optimize edilmiş bir sürümüdür.
- (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
}
}
}
superb .. çok teşekkürler Rob .. işe yaradı :) – suse