比较objective-C中的2个字符串

时间:2011-05-25 01:19:59

标签: objective-c iphone string nsstring comparison

我写了以下代码:

   if (depSelectedIndice > -1 && comSelectedIndice> -1)
        {
            NSLog(@"depart elemet : %d ",depSelectedIndice);
            NSLog(@"depart elemet : %d ",comSelectedIndice);
            NSLog(@"ok1");
            NSString *choosedDate =[NSString stringWithFormat:@"%@%@",[deparatureDates objectAtIndex:depSelecif (depSelectedIndice > -1 && comSelectedIndice> -1)
    {
        NSLog(@"depart elemet : %d ",depSelectedIndice);
        NSLog(@"depart elemet : %d ",comSelectedIndice);
        NSLog(@"ok1");
        NSString *choosedDate =[NSString stringWithFormat:@"%@%@",[deparatureDates objectAtIndex:depSelectedIndice], [goingBackDates objectAtIndex:comSelectedIndice]];
        NSLog(@"0000000000001");

        NSLog(@" number of element : %d", [allCombinations count]);
//        for (int j=0; j<[allCombinations count]; j++)
//        {
//            NSLog(@"111111111111111111");
//           // NSString *date = [[allCombinations objectAtIndex:j] objectForKey:@"keydate"];
//            NSLog(@"22222222222222222222");
//              if([date isEqualToString:choosedDate])
//              {
//                  depPrice.text=@"1";
//                  comPrice.text=@"1";
//                  price.text=@"3";
//                  
//              }
       // }
    }

allCombinations是在.h中声明的NSArray,我有initilase并在另一种方法中使用它。我不能在这种方法中使用? :/

但我崩溃了。我真的不知道问题在哪里,但我认为这是我比较if(date==choosedDate)的时候?请帮忙

3 个答案:

答案 0 :(得分:23)

在像==这样的指针上使用NSString *时,它会比较内存地址,而不是比较字符串的值。

以下将实际比较字符串值:

if([date isEqualToString:choosedDate])

答案 1 :(得分:2)

除了使用[date isEqualToString:choosedDate]代替date==choosedDate之外,我最初的反应是确保depSelectedIndicecomSelectedIndice不引用deparatureDates之后的元素{1}}和goingBackDates位于以下行。

NSString *choosedDate =[NSString stringWithFormat:@"%@%@",[deparatureDates objectAtIndex:depSelectedIndice], [goingBackDates objectAtIndex:comSelectedIndice]];

我不会正确分配depPricecomPriceprice,也不会分配它们的类型,但它们也可能会给您带来问题。

答案 2 :(得分:2)

在Objective C中,比较两个字符串的更好方法是:

NSString *string1 = <your string>;
NSString *string2 = <your string>;

if ([string1 caseInsensitiveCompare:string2] == NSOrderedSame) {
    //strings are same
} else {
    //strings are not same
}