我写了以下代码:
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)
的时候?请帮忙
答案 0 :(得分:23)
在像==
这样的指针上使用NSString *
时,它会比较内存地址,而不是比较字符串的值。
以下将实际比较字符串值:
if([date isEqualToString:choosedDate])
答案 1 :(得分:2)
除了使用[date isEqualToString:choosedDate]
代替date==choosedDate
之外,我最初的反应是确保depSelectedIndice
和comSelectedIndice
不引用deparatureDates
之后的元素{1}}和goingBackDates
位于以下行。
NSString *choosedDate =[NSString stringWithFormat:@"%@%@",[deparatureDates objectAtIndex:depSelectedIndice], [goingBackDates objectAtIndex:comSelectedIndice]];
我不会正确分配depPrice
,comPrice
和price
,也不会分配它们的类型,但它们也可能会给您带来问题。
答案 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
}