Строка сравнения Objective-C - PullRequest
0 голосов
/ 22 февраля 2011

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

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

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

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

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

Ответы [ 2 ]

7 голосов
/ 22 февраля 2011

Вы можете использовать методы сравнения 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");
}
0 голосов
/ 22 февраля 2011

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

Do a:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...