Сравнение строк Цель 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
".