2012-01-08 2 views
-1

Я пытаюсь проверить, дает ли пользователь ввод, который является числом, но не буквой. Когда задано нечисловое значение, я хочу напечатать сообщение с предупреждением, например «неправильный формат».Проверка входного значения

Это мой исходный код:

-(IBAction)btnPressed{ 

    NSString *firstString = textFiled1.text; 
    NSString *secondString = textFiled2.text; 
    NSString *thirdString = textFiled3.text; 

    int num1; 
    int num2; 
    int num3; 

    int output; 

    num1 = [firstString intValue]; 
    num2 = [secondString intValue]; 
    num3 = [thirdString intValue]; 

    output = (num1 + num2)/num3; 

    lable1.text = [NSString stringWithFormat:@"%d",output]; 
} 

ответ

0

Это, как я хотел бы сделать это:

NSCharacterSet *nonNumbers = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; 
if ([firstString rangeOfCharacterFromSet:nonNumbers].location != NSNotFound) { 
    // firstString has non-number characters in it! 
} 
+0

Спасибо, что работает, как я хочу :) –

+0

Это не будет работать должным образом, потому что 'decimalDigitCharacterSet' включает в себя * больше, чем от 0 до 9 *, он включает в себя цифры и в других сценариях/языках. Кроме того, это не удастся, если вход отрицательный (который не был оговорен как требование, но должен быть рассмотрен в любом случае). – dreamlax

+0

Я полагаю, это правда. Легко использовать один и тот же базовый метод с набором символов, включая «-» (и «.», Если на то пошло). Тот факт, что набор символов содержит неарабские цифры, действительно является неудачным здесь. Однако в некоторых ситуациях, которые действительно могут быть желательными. –

4

Использование NSNumberFormatter. Если входной параметр не является допустимым номером, числовое значение будет равно нулю.

NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 
[f setNumberStyle:NSNumberFormatterDecimalStyle]; 
num1 = [f numberFromString:firstString]; 
[f release]; 

if (num1 == nil) { 
// throw exception 
} 
+0

Я новичок в Xcode. Не могли бы вы помочь мне больше, где я должен писать этот код? –

+0

Сразу после получения первой строки. после NSString * firstString = textFiled1.text; убедитесь, что вы определяете num1 как NSNumber, но вместо int. – mbh

+0

У меня есть NSSting для NSNumber (несовместимая инициализация типа указателя), но он работает без его принятия. Но я хочу, чтобы он не принимал только буквы. Не могли бы вы мне помочь, пожалуйста? –

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