2013-09-11 3 views
1

У меня есть NSMutableArray с несколькими продуктами. У каждого продукта есть сумма. Я хочу обновить количество связанного продукта при нажатии шага. Но все мои продукты (весь NSMutableArray) обновляются с количеством степлера.объект при обновлении индекса весь nsmutablearray

NSInteger index = stepper.tag; 

    Product *p = [products objectAtIndex:index]; 
    p.amount = [NSNumber numberWithDouble:stepper.value]; 
    // UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%d", stepper.tag] message:@"test" delegate:nil cancelButtonTitle:@"ok"otherButtonTitles:nil]; 
    // [alert show]; 

    for (Product *p in products) { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%@", p.amount] message:p.name delegate:nil cancelButtonTitle:@"ok"otherButtonTitles:nil]; 
     [alert show]; 
    } 

У кого-нибудь есть решение?

ответ

1

Поскольку Product * p является указателем, вам не нужно удалять и повторно вставлять в массив. Вы можете просто изменить Продукт на месте. Попробуйте это:

NSInteger index = stepper.tag; 

Product *p = [products objectAtIndex:index]; 
p.amount = [NSNumber numberWithDouble:stepper.value]; 
+0

Спасибо, но результат все тот же: s –

+0

Я редактировал мой вопрос весь код запускается, когда шаговый щелкают .. (когда я раскомментировать одну часть, я вижу правильный stepper.tag) –

+0

Вы уверены, что весь массив был обновлен. Отладка вашего кода с помощью alertView не лучший способ, потому что метод show не останавливался на каждом элементе, а складывал его. Замените alertView на NSLog и покажите результат. – tdelepine

Смежные вопросы