2012-09-25 215 views
0

可能重复:
IF clause is not validating NSString function return?的NSString比较不工作

什么,我试图做的是从RSS获取项目,并把它们存储在根据其类型数组。但问题是,当我比较字符串来分离项目时,我没有检查到任何事情,而且字符串完全相同,但它表示它们不相等。

- (void)parserDidEndDocument:(NSXMLParser *)parser { 

    if (eventsList != nil) { 
     for (int i = 0; i<[eventsList count]; i++) { 
      NSMutableString* str = [[eventsList objectAtIndex:i] objectForKey:@"category"]; 
      if ([str isEqualToString:@"normal"]) { 
       normalEvents = [[NSMutableArray alloc] init]; 
       [normalEvents addObject:eventsList]; 
      } else if ([str isEqualToString:@"sub"]) { 

       subEvents = [[NSMutableArray alloc] init]; 
       [subEvents addObject:eventsList]; 
      } else if ([str isEqualToString:@"main"]) { 
       NSLog(@"salve mundi"); 

       mainEvents = [[NSMutableArray alloc] init]; 
       [mainEvents addObject:eventsList]; 
      } else { 
       NSLog(@"%@",str); 
      } 
     } 
    } 
} 
+1

您一直在评论中说“它没有用”。什么没有用?你看到了什么结果? – rdelmar

+0

在if语句之前记录你的'str'。 – HelmiB

回答

4

使用==你比较对象的地址。要比较两个NSStrings的内容,您必须改用实例方法[str isEqualToString:@"sub"]

+0

这是我第一次尝试,但它不起作用。 –

+4

它必须。如果返回“NO”,那么你的字符串是不同的或者'str'是'nil'。尝试记录'str'。 'NSLog(“String 1:%@ \ nString 2:%@”,str,@“sub”);'。 – DrummerB

+0

它仍然不适合我。 –

2

我会做一些测试,以确保字符串是平等的。例如,如果它在结尾或开始处有空白,如果它是大写等等。

[[yourString lowercaseString] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] 
+0

没有工作 –