Uygulamamda, belirli bir noktada iki NSString
s bir şey yapmak için aynı olmasını gerektiren bir mekanizma var; İkisini karşılaştırdığım zaman, aynı olsalar bile, bunu hala tanımıyor. kodu şöyle bir şeydir:İki NSStrings Karşılaştır
NSString * aString = [self someMethodThatGetsAString];
NSString * bString;
BOOL areStringsTheSame = NO;
while (areStringsTheSame != YES) {
bString = [self someMethodThatTakesNSStringsFromAnArrey];
if (bString == aString) {
areStringsTheSame = YES;
{ }
Hatta bir NSLog()
sokulmuş ve belirli bir noktada onlar aynıydı (ve aynı bildiğim kadarıyla bu ... açılımı ==
budur) emin yaptı ama hala BOOL
değerini değiştirmek için if
'a girmedi.
Bu karşılaştırmanın başka bir yolu var mı? Bir şey mi eksik?
if ([bString isEqualToString:aString])
==
referansları (adreslerini) karşılaştırır dizeleri değil dizeleri değeri:
karşılaştırmakta önce sıfır genişlik beyaz boşluk karakterleri adresinin dize temizlemek gerekiyor bu fethetmek için Doğru. Ve OOP prensiplerini araştırın (aynı özelliklere sahip iki nesne mutlaka aynı nesneler değildir). Aksi takdirde, geliştirici hayatınızın her gün bu sorunuyla karşılaşacaksınız :-) – vstrien
Görünüşe göre, == 'Objective-C'nin string değişkenlerini kullandığı için, dizeleri büyük-küçük harf duyarlılığıyla karşılaştırmak için çalışıyor. Örneğin, bir dize A ve dize B belirtin ve '==' yapın ve bunların her ikisinin de aynı adreste depolandığını görürsünüz. –