/ / Валидиране на низове с помощта на NSNumberFormatter - какао, nsnumberformatter

Валидиране на низове с помощта на NSNumberFormatter - какао, nsnumberformatter

Опитвам се да конвертирам низове в числа, използвайки NSNumberFormatter, В моето заявление входните нива с повече от 2 цифри след десетичната точка не са валидни, т.е. @"3.1" и @"3.14" са валидни входове, но @"3.141" не е.

Документацията за NSNumberFormatter казва това setMaximumFractionDigits: "[s] определя максималния брой цифри след десетичния разделител, разрешен като входен сигнал от получателя."

Така че, бях изненадан, когато този код:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.maximumFractionDigits = 2;
NSNumber *number = [numberFormatter numberFromString:@"3.141"];
NSLog(@"%@", number);

общоприет @"3.141" и ми даде следния изход:

3.141

Очаквах превръщането на @"3.141" да се провали (и да се върне nil) защото има повече от максималния брой цифри, разрешен след десетичния разделител.

Очевидно тук не разбирам нещо основно NSNumberFormatter не използвай maximumFractionDigits като част от валидирането на въвеждането на низове?

Отговори:

1 за отговор № 1

Предполага се, че липсват други отговори или някаква индикация за това в официалната документация: Не, NSNumberFormatter не поддържа изчерпателна проверка при синтактичен анализ на номера и maximumFractionDigits е приложимо само при форматиране на числа. Това изглежда е в съответствие с sscanf, strtof И такива.


-1 за отговор № 2

NSNumberFormatter "S numberFromString: метод връща NSNumber ако може да анализира низа правилно, или нула, ако не може.