NSScanner:scanInteger を介して文字列を符号付き整数に変換していますが、無効な入力でエラーをスローする代わりに、「123abc」などの値を「123」として受け入れているようです。
私は独自のカスタム検証を行うことができますが、変換を実行して「123abc」で失敗する API を見つけたいと考えています。
ちなみに、「abc123」は scanInteger で失敗しますが、これは良いことです。
NSScanner:scanInteger を介して文字列を符号付き整数に変換していますが、無効な入力でエラーをスローする代わりに、「123abc」などの値を「123」として受け入れているようです。
私は独自のカスタム検証を行うことができますが、変換を実行して「123abc」で失敗する API を見つけたいと考えています。
ちなみに、「abc123」は scanInteger で失敗しますが、これは良いことです。
スキャナを使用することがこれを行う方法だとは思いません。できますが、もっと簡単な方法があります。NSString メソッド rangeOfCharactersFromSet: を使用して、数字以外の文字をチェックします。
NSCharacterSet *notDigits = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
NSUInteger nonDigits = [enteredString rangeOfCharacterFromSet:notDigits].length;
nonDigits がゼロでない場合、ユーザーは数字以外を入力しています。小数点を許可する場合は、数字と小数点以外のすべてを含む独自のセットを作成する必要があります。