Сравните 2 строки в объективе-C - PullRequest
1 голос
/ 25 мая 2011

Я написал следующий код:

   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";
//                  
//              }
       // }
    }

allCombination - это NSArray, объявленное в .h, у меня есть initilase и я использовал его в другом методе. Я не могу использовать в этом методе? : /

Но у меня сбой. Я действительно не знаю, где проблема, но я думаю, что это когда я сравниваю if(date==choosedDate)? Помогите пожалуйста

Ответы [ 3 ]

23 голосов
/ 25 мая 2011

Когда вы используете == для указателей типа NSString *, он сравнивает адреса памяти, а не сравнивает значение строк.

Следующие данные на самом деле будут сравнивать строковые значения:

if([date isEqualToString:choosedDate])
2 голосов
/ 09 февраля 2013

В Objective C лучший способ сравнить две строки:

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

if ([string1 caseInsensitiveCompare:string2] == NSOrderedSame) {
    //strings are same
} else {
    //strings are not same
}
2 голосов
/ 25 мая 2011

В дополнение к использованию [date isEqualToString:choosedDate] вместо date==choosedDate, моей первоначальной реакцией было бы убедиться, что depSelectedIndice и comSelectedIndice не ссылаются на элементы после конца deparatureDates и goingBackDates в следующая строка.

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

Не знаю, правильно ли были выделены depPrice, comPrice и price, каковы их типы, но они также могут вызывать у вас проблемы.

...