Ответ 1
Используйте метод -isEqualToString:
для сравнения значения двух строк. Использование оператора C ==
будет просто сравнивать адреса объектов.
if ([category isEqualToString:@"Some String"])
{
// Do stuff...
}
В настоящее время у меня установлен веб-сервер, с которым я связываюсь через SOAP с моим iPhone-приложением. Я возвращаю строку, содержащую GUID, и когда я пытаюсь сравнить это с другой строкой, я получаю некоторые странные результаты.
Почему это не огонь? Неужели две строки соответствуют?
NSString *myString = @"hello world";
if(myString == @"hello world")
return;
Используйте метод -isEqualToString:
для сравнения значения двух строк. Использование оператора C ==
будет просто сравнивать адреса объектов.
if ([category isEqualToString:@"Some String"])
{
// Do stuff...
}
Вы можете использовать чувствительное к регистру или не учитывающее регистр сравнение, в зависимости от того, что вам нужно. С учетом регистра:
if ([category isEqualToString:@"Some String"])
{
// Both strings are equal without respect to their case.
}
Нечувствительность к регистру выглядит следующим образом:
if ([category compare:@"Some String" options:NSCaseInsensitiveSearch] == NSOrderedSame)
{
// Both strings are equal with respect to their case.
}
Вы можете сравнить строку с приведенными ниже функциями.
NSString *first = @"abc";
NSString *second = @"abc";
NSString *third = [[NSString alloc] initWithString:@"abc"];
NSLog(@"%d", (second == third))
NSLog(@"%d", (first == second));
NSLog(@"%d", [first isEqualToString:second]);
NSLog(@"%d", [first isEqualToString:third]);
Output will be :-
0
1
1
1