2016-09-22 68 views
0

我有一個允許用戶輸入數字的UITextField iOS應用程序。我如何確保用戶輸入的值是有效數字(整數或十進制)。以下是我已經盡力了,但由於某種原因,它不會爲十進制數的工作:如果我輸入一個十進制數,如435.634,上面的代碼在控制檯日誌返回「無效號碼」檢查NSString是否爲有效數字 - 整數或十進制數字

NSCharacterSet *notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; 

if ([numString rangeOfCharacterFromSet:notDigits].location == NSNotFound) { 
    NSLog(@"valid number"); 
} 

else { 
    NSLog(@"invalid number"); 
} 

。我不明白爲什麼這不起作用,因爲我正在使用decimalDigitCharacterSet

+0

使用'NSNumberFormatter',以正確處理特定於區域的數字。 – rmaddy

+0

'decimalDigitCharacterSet'集合包含數字,不包含任何標點符號。 – rmaddy

+0

@Supertecnoboff - 另一種選擇是向用戶顯示數字鍵盤。不需要擔心其他事情 - https://www.cocoacontrols.com/search?q=numeric –

回答

1

感謝@rmaddy幫助我出去,這裏是我使用的解決方案的情況下,任何人有興趣:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
formatter.numberStyle = NSNumberFormatterDecimalStyle; 
NSNumber *myNumber = [formatter numberFromString:inputNumString]; 

if (myNumber != nil) { 
    NSLog(@"valid number"); 
} 

else { 
    NSLog(@"invalid number"); 
} 

如果數字是整數或小數這樣,即使工作。它也適用於不同的區域設置的十進制字符,如,

+1

謝謝。節省了我的時間。 – HongchaoZhang

相關問題