counter ++ / counter-- не работает должным образом - PullRequest
2 голосов
/ 27 февраля 2012

Ниже приведен код, который я использую. Если я нажимаю addQuanity, m_label устанавливается отображает один вместо двух. Если я нажимаю addWuantity снова, m_label показывает 2. Нажмите minusQuantity, чтобы изменить m_label на 3 вместо 2, но при нажатии minusQuanity снова измените m_label на 2. Есть идеи о том, чего мне не хватает?

Спасибо, Райан

NSInteger counter = 1;
-(IBAction) addQuantity
{
if (counter > 9 )
    return;
[m_label setText:[NSString stringWithFormat:@"%d",++counter]];
}

-(IBAction) minusQuantity
{
if (counter < 1 )
    return;
[m_label setText:[NSString stringWithFormat:@"%d",--counter]];
}

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

Вы используете операторы увеличения (++) и уменьшения (-) в качестве префиксов или суффиксов? Если вы используете их в качестве суффиксов (как показано в заголовке вашего вопроса), они будут вести себя так, как вы описываете. Если вы используете их в качестве префиксов (как показано в теле вашего вопроса), они будут вести себя так, как вы намереваетесь.

При использовании в качестве суффикса выражение возвращает исходное значение переменной, а затем добавляет / вычитает единицу.

NSInteger counter = 1;
NSLog(@"%i", counter++);  // will print "1"
// now counter equals 2

При использовании в качестве префикса выражение будет складывать / вычитать единицу, а затем возвращает значение обновленной переменной.

NSInteger counter = 1;
NSLog(@"%i", ++counter);  // will print "2"
// now counter equals 2
1 голос
/ 27 февраля 2012

Сохраните строку кода и упростите понимание логики вашей программы.

NSInteger counter = 1;

-(IBAction) addQuantity
{
if (counter <= 9 )
    [m_label setText:[NSString stringWithFormat:@"%d",++counter]];
}

-(IBAction) minusQuantity
{
if (counter >= 1 )
    [m_label setText:[NSString stringWithFormat:@"%d",--counter]];
}
0 голосов
/ 27 февраля 2012

вместо

[m_label setText:[NSString stringWithFormat:@"%d",--counter]];

Попробуйте

counter -=1;
[m_label setText:[NSString stringWithFormat:@"%d",counter]];
...