Почему мой оператор if не срабатывает?

У меня есть следующая функция Objective-c

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{


NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];

NSString *key = [keys objectAtIndex:section];
NSArray *nameSection = [mysearchdata objectForKey:key];

static NSString *SectionsTableID = @"SectionsTableID";
static NSString *TobyCellID = @"TobyCellID";

NSString *aName = [nameSection objectAtIndex:row];  

if (aName == @"Toby")
{
    TobyCell *cell = [tableView dequeueReusableCellWithIdentifier:TobyCellID];      
    if (cell == nil)
    {       
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TobyCell" owner:self  options:nil];
        for (id oneObject in nib)
            if ([oneObject isKindOfClass:[TobyCell class]])
                cell = (TobyCell *)oneObject;   
    }                                       
    cell.lblName.text = [nameSection objectAtIndex:row];
    return cell;        
}
else
{
 //standard cell loading code
}
}

Все, что я хочу, это чтобы оператор if срабатывал, когда строка равна моему имени - очень интересно.

if (aName == @"Toby")

Я поместил предупреждение, и значение устанавливается, и оно устанавливается на Тоби, но оператор If не выполняет только часть else. Это явно что-то простое, чего мне не хватает.

Я изучаю Objective-C


person Toby Allen    schedule 30.10.2009    source источник


Ответы (1)


Это if утверждение:

if (aName == @"Toby")

сравнивает указатели, а не строки. Ты хочешь:

if ([aName isEqualToString:@"Toby"])

Это на самом деле не отличается от простого C; вы также не можете использовать == для сравнения строк.

person Carl Norum    schedule 30.10.2009
comment
Спасибо. Так близко и так далеко :) - person Toby Allen; 30.10.2009