Сравнение строк Цель C

Я боролся с простым сравнением, но я не могу заставить его работать. Я читаю XML-файл, и мне нужно сравнить данные из него, чтобы показать правильную картинку.

http://www.cleaner.se/larm.xml (файл примера для разбора)

Я пробовал такие вещи, как:

if([aLarm.larmClass isEqualToString:@"A"])
    NSLog(@"same");
 else
    NSLog(@"Not same");

Если я использую: NSLog(aLarm.larmClass); консоль выкладывает это красиво, как и должно. Что я делаю неправильно?

2 ответа

Вы можете использовать NSString сравнить: методы. Например:

if ([myString caseInsensitiveCompare:@"A"] == NSOrderedSame ) {
    NSLog(@"The same");
} else {
    NSLog(@"Not the same.");
}

Результатом является NSComparisonResult, который является просто перечислением с типами NSOrderedSame, NSOrderedAscending и NSOrderedDescending.

Проверьте документацию на различные методы сравнения здесь.

Конечно, если получатель действительно NSString, тогда isEqualToString: также должен работать. Так что если вы пытаетесь сравнить имя класса (aLarm.larmClass??), то вы можете позвонить:

if ([NSStringFromClass([aLarm class]) isEqualToString:@"A"] ) {
    NSLog(@"The same");
}

Если larmClass Свойство - это строка, убедитесь, что она на самом деле имеет длину одного символа (т.е. она не имеет начальных или конечных пробелов, которые были случайно включены при разборе XML). Если larmClass собственность действительно является NSString содержащий букву "А" тогда [aLarm.larmClass isEqualToString:@"A"] вернусь YES,

Сделать:

NSLog(@"%u, %@", [aLarm.larmClass length], aLarm.larmClass);

и просто убедитесь, что он показывает "1, A".

Другие вопросы по тегам