Сравнение строк с использованием ==
не дает того, о чем вы думаете, см. Этот связанный вопрос . Просто подвести итог:
NSString *foo1 = @"foo";
NSString *foo2 = @"foo";
NSString *foo3 = [NSString stringWithString:@"foo"];
foo1 != foo3 // pointer equality
[foo1 isEqual:foo3] // object equality
[foo1 isEqualToString:foo3] // same results as isEqual:, a bit faster
foo1 == foo2 // string literals are optimized to have the same address