字符串比较Objective-C

时间:2011-02-21 21:01:09

标签: objective-c compare

我一直在努力进行简单的比较,但我无法让它发挥作用。 我正在读取XML文件,我需要比较它的数据才能显示正确的图片。

http://www.cleaner.se/larm.xml(用于解析的示例文件)

我尝试过这样的事情:

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

如果我使用:NSLog(aLarm.larmClass);控制台可以很好地完成它。我做错了什么?

2 个答案:

答案 0 :(得分:7)

您可以使用NSString compare:方法。例如:

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

结果是NSComparisonResult,它只是一个包含NSOrderedSame,NSOrderedAscending和NSOrderedDescending类型的枚举。

查看各种比较的文档:方法here

当然,如果接收者实际上是一个NSString,那么isEqualToString:也应该有效。所以如果你想比较一个类名(aLarm.larmClass ??),那么你可以调用:

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

答案 1 :(得分:0)

如果larmClass属性是一个字符串,请确保它实际上是一个字符长度(即它没有在解析XML时意外包含的任何前导或尾随空格)。如果larmClass属性确实是包含字母“A”的NSString,则[aLarm.larmClass isEqualToString:@"A"]将返回YES

做一个:

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

并确保它显示“1, A”。