En mi aplicación hay un mecanismo que requiere que en un cierto punto dos NSString
s sean lo mismo para hacer algo; por alguna razón, cuando comparo los dos, incluso cuando son iguales, todavía no lo reconocen. El código es algo como esto:Comparar dos NSStrings
NSString * aString = [self someMethodThatGetsAString];
NSString * bString;
BOOL areStringsTheSame = NO;
while (areStringsTheSame != YES) {
bString = [self someMethodThatTakesNSStringsFromAnArrey];
if (bString == aString) {
areStringsTheSame = YES;
{ }
incluso he insertado una NSLog()
y se aseguró de que en un momento determinado que eran los mismos (y por lo que sé que esto es lo que significa ==
...), pero aún no entró en el if
para cambiar el valor BOOL
.
¿Hay alguna otra forma de hacer esta comparación? ¿Me estoy perdiendo de algo?
Cierto. Y profundice en los principios de OOP (dos objetos con las mismas propiedades no son necesariamente los mismos objetos). De lo contrario, vas a encontrar este problema todos los días de tu vida de desarrollador :-) – vstrien
Aparentemente '==' funciona igual de bien para comparar cadenas con mayúsculas y minúsculas, debido a la forma en que Objective-C usa variables de cadena. Por ejemplo, declare una cadena A y una cadena B, y haga '==' y encontrará que ambas están almacenadas en la misma dirección. –