Подтвердить что ты не робот

Сравнение строк в Objective-C

В настоящее время у меня установлен веб-сервер, с которым я связываюсь через SOAP с моим iPhone-приложением. Я возвращаю строку, содержащую GUID, и когда я пытаюсь сравнить это с другой строкой, я получаю некоторые странные результаты.

Почему это не огонь? Неужели две строки соответствуют?

NSString *myString = @"hello world";

if(myString == @"hello world")
    return;
4b9b3361

Ответ 1

Используйте метод -isEqualToString: для сравнения значения двух строк. Использование оператора C == будет просто сравнивать адреса объектов.

if ([category isEqualToString:@"Some String"])
{
    // Do stuff...
}

Ответ 2

Вы можете использовать чувствительное к регистру или не учитывающее регистр сравнение, в зависимости от того, что вам нужно. С учетом регистра:

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.
}

Ответ 3

Вы можете сравнить строку с приведенными ниже функциями.

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