2016-09-22 4 views
0

사용자가 숫자를 입력 할 수있는 UITextField의 iOS 앱이 있습니다. 사용자가 입력 한 값이 유효한 숫자인지 확인하려면 어떻게해야합니까? 또는 10 진수). 여기에 내가 시도 것입니다,하지만 어떤 이유로 소수입니다 작동하지 않습니다 :NSString이 유효한 숫자인지 확인 - 전체 또는 십진수

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

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

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

을 나는 위의 코드는 콘솔 로그에서 "올바르지 않은 숫자"를 반환 같은 435.634로 진수를 입력합니다. 내가 왜 decimalDigitCharacterSet을 사용하면서 이것이 작동하지 않는지 이해할 수 없습니까?

+0

등 다양한 로케일 소수 문자로도 작동합니다. NSNumberFormatter를 사용하여 로켈 고유 번호를 올바르게 처리합니다. – rmaddy

+0

'decimalDigitCharacterSet' 세트는 구두점이 아닌 숫자를 포함합니다. – rmaddy

+0

@Supertecnoboff - 또 다른 옵션은 사용자에게 숫자 키패드를 제시하는 것입니다. 아무 것도 걱정할 필요가 없습니다. https://www.cocoacontrols.com/search?q=numeric –

답변

1

덕분에 나를 도와 @rmaddy하기 위해, 여기의 경우 사람에 내가 사용하고있는 솔루션은 관심 : 수를 전체 또는 10 진수 인 경우에도 작동합니다

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