2015-02-07 2 views
0

У меня есть UITextView, который называется DictionaryConsole. Каждые 0,05 секунды, текст создается в нем на основании следующего утверждения переключателя:Текст, устанавливаемый в UITextView, устанавливается несколько раз

switch ((DictionaryLine*100)/NumberofWordsTilEnd) { 
    case 10: 
     NewLine = [NSString stringWithFormat: @"Attack is Now 10 Percent Complete"]; 
     NewLine2 = [NewLine stringByAppendingString:@"\n"]; 
     DictionaryConsole.text = [NewLine2 stringByAppendingString:DictionaryConsole.text]; 
     break; 
    case 25: 
     NewLine = [NSString stringWithFormat: @"Attack is Now 25 Percent Complete"]; 
     NewLine2 = [NewLine stringByAppendingString:@"\n"]; 
     DictionaryConsole.text = [NewLine2 stringByAppendingString:DictionaryConsole.text]; 
     break; 
    case 50: 
     NewLine = [NSString stringWithFormat: @"Attack is Now 50 Percent Complete"]; 
     NewLine2 = [NewLine stringByAppendingString:@"\n"]; 
     DictionaryConsole.text = [NewLine2 stringByAppendingString:DictionaryConsole.text]; 
     break; 
    case 75: 
     NewLine = [NSString stringWithFormat: @"Attack is Now 75 Percent Complete"]; 
     NewLine2 = [NewLine stringByAppendingString:@"\n"]; 
     DictionaryConsole.text = [NewLine2 stringByAppendingString:DictionaryConsole.text]; 
     break; 
    case 80: 
     NewLine = [NSString stringWithFormat: @"Attack is Now 80 Percent Complete"]; 
     NewLine2 = [NewLine stringByAppendingString:@"\n"]; 
     DictionaryConsole.text = [NewLine2 stringByAppendingString:DictionaryConsole.text]; 
     break; 
    case 90: 
     NewLine = [NSString stringWithFormat: @"Attack is Now 90 Percent Complete"]; 
     NewLine2 = [NewLine stringByAppendingString:@"\n"]; 
     DictionaryConsole.text = [NewLine2 stringByAppendingString:DictionaryConsole.text]; 
     break; 
    case 95: 
     NewLine = [NSString stringWithFormat: @"Attack is Now 95 Percent Complete"]; 
     NewLine2 = [NewLine stringByAppendingString:@"\n"]; 
     DictionaryConsole.text = [NewLine2 stringByAppendingString:DictionaryConsole.text]; 
    case 98: 
     NewLine = [NSString stringWithFormat: @"Attack is Now 98 Percent Complete"]; 
     NewLine2 = [NewLine stringByAppendingString:@"\n"]; 
     DictionaryConsole.text = [NewLine2 stringByAppendingString:DictionaryConsole.text]; 
     break; 
    default: 
     break; 


} 

Это NSTimer:

Dictionary = [NSTimer scheduledTimerWithTimeInterval:0.05 
               target:self  
              selector:@selector(DictionaryAttack) 
              userInfo:nil 
               repeats:YES]; 

Каждый раз, когда -(void)DictionaryAttack называется, что оператор переключатель запускается на выполнение. Dictionary Line - это int, который увеличивается на 1 в -(void)DictionaryAttack. Строки идут в DictionaryConsole (UITextView) без проблем. Но мои проблемы - 33 строки NewLine «печатается» в текстовом виде. Однако мне бы хотелось, чтобы одна строка была напечатана. Что я сделал не так?

ответ

1

Вы пытаетесь разделить целые числа. Результатом будет усеченное число, которое может поместиться в ваш случай переключения несколько раз. Пример: 10.0 будет усекать до 10, и так будет 10.1, поэтому ваш коммутатор case 10 будет выполняться несколько раз.

What is the behavior of integer division?

+0

Так я могу сделать так, что это не округляется? – TonyStark

+0

Nevermind, я закончил добавление инструкции if для каждого случая, чтобы проверить, было ли целое число равным 1, и увеличило его до 2 после того, как строка была «напечатана» в UITextView, так что произошел следующий случай 10 , он не будет выполняться, потому что целое число имеет новое значение. Спасибо, что сообщили мне, что пошло не так, но это очень помогло. – TonyStark

+0

Обязательно. Помните об этом, когда вы делаете разделение на C, потому что очень легко создавать ошибки, если вы не знаете о математическом поведении различных типов данных. – ozz

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