Почему мое заявление if не увольняет? - PullRequest
0 голосов
/ 30 октября 2009

У меня есть следующая функция 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 не выполняет только остальную часть. Это очевидно что-то простое, что мне не хватает.

Я учусь Objective-C

1 Ответ

9 голосов
/ 30 октября 2009

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

if (aName == @"Toby")

сравнивает указатели, а не строки. Вы хотите:

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

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

...