Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 检查UITextField的数值是否大于0_Ios_Objective C_Uitextfield - Fatal编程技术网

Ios 检查UITextField的数值是否大于0

Ios 检查UITextField的数值是否大于0,ios,objective-c,uitextfield,Ios,Objective C,Uitextfield,我有一个UITextField,我只想要一个大于0的数字(我不想要非数字字符或值0) 这是我检查它是否为空的方式: if(seizure.text.length==0) 这就是我检查它是否等于0的方法: else if(seizure.text doubleValue]==0) 如何检查非数字字符?[accountage.text doubleValue]==0如果accountage.text是零的文本表示形式,或者如果它不包含数字的有效文本表示形式(请参阅doubleValue的文档),

我有一个
UITextField
,我只想要一个大于0的数字(我不想要非数字字符或值0)

这是我检查它是否为空的方式:

if(seizure.text.length==0)
这就是我检查它是否等于0的方法:

else if(seizure.text doubleValue]==0)

如何检查非数字字符?

[accountage.text doubleValue]==0
如果
accountage.text
是零的文本表示形式,或者如果它不包含数字的有效文本表示形式(请参阅
doubleValue
的文档),则为真


换句话说,如果这个表达式为false,那么就有一个以数字开头的字符串值。但是,您仍然不知道字符串值是否只包含一个数字,例如
[@“2.5英里”doubleValue]
的值为
2.5
。如果您需要处理这样的字符串,您应该查看
NSScanner

[attraction.text doubleValue]==0
如果
attraction.text
是零的文本表示,或者如果它不包含数字的有效文本表示(请参阅
doubleValue
的文档),则为真


换句话说,如果这个表达式为false,那么就有一个以数字开头的字符串值。但是,您仍然不知道字符串值是否只包含一个数字,例如
[@“2.5英里”doubleValue]
的值为
2.5
。如果需要处理这样的字符串,应查看
NSScanner

首先检查字符串中是否有字符,然后检查以确保其仅包含数字字符,最后检查值是否大于0:

if (seizure.text.length > 0)
{
    NSCharacterSet *nonNumbers = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
    if ([seizure.text rangeOfCharacterFromSet:nonNumbers].location == NSNotFound)
    {
        if ([seizure.text doubleValue] > 0)
        {
            // Text Field contains a numeric value greater than 0
            NSLog(@"Good number.");
            return;
        }
    }
}

// If we make it to here, it does not meet your requirements.
NSLog(@"Bad Number.");

首先检查字符串中是否有任何字符,然后检查以确保它只包含数字字符,最后检查值是否大于0:

if (seizure.text.length > 0)
{
    NSCharacterSet *nonNumbers = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
    if ([seizure.text rangeOfCharacterFromSet:nonNumbers].location == NSNotFound)
    {
        if ([seizure.text doubleValue] > 0)
        {
            // Text Field contains a numeric value greater than 0
            NSLog(@"Good number.");
            return;
        }
    }
}

// If we make it to here, it does not meet your requirements.
NSLog(@"Bad Number.");
在这里工作会做得很好。与
-[NSString doubleValue]
不同,它的
scanDouble:
可以解析并告诉您它是否使用了整个字符串,因此您将知道存在非数字字符

在一些测试用例上进行演示。有关预期结果的说明,请参见注释

NSArray * texts = @[// First four unacceptable because non-numeric
                    @"", @"Hello, world!", @"1.0 excelsior", @"Jiminy 1.0 Crickets",
                    // These three unacceptable because 0 or less
                    @"0.0" @"0", @"-2048",
                    // Last three are good
                    @"3.14159", @"1", @"10000000000.0"];
for( NSString * text in texts ){
    NSScanner * scanner = [NSScanner scannerWithString:text];
    double val;
    [scanner scanDouble:&val];
    // Scanned the whole string and ended up with a positive value
    if( [scanner isAtEnd] && val > 0 ){
        NSLog(@"'%@'? I accept.", text);
    }
    else {
        NSLog(@"'%@' is no good.", text);
    }
}
在这里工作会做得很好。与
-[NSString doubleValue]
不同,它的
scanDouble:
可以解析并告诉您它是否使用了整个字符串,因此您将知道存在非数字字符

在一些测试用例上进行演示。有关预期结果的说明,请参见注释

NSArray * texts = @[// First four unacceptable because non-numeric
                    @"", @"Hello, world!", @"1.0 excelsior", @"Jiminy 1.0 Crickets",
                    // These three unacceptable because 0 or less
                    @"0.0" @"0", @"-2048",
                    // Last three are good
                    @"3.14159", @"1", @"10000000000.0"];
for( NSString * text in texts ){
    NSScanner * scanner = [NSScanner scannerWithString:text];
    double val;
    [scanner scanDouble:&val];
    // Scanned the whole string and ended up with a positive value
    if( [scanner isAtEnd] && val > 0 ){
        NSLog(@"'%@'? I accept.", text);
    }
    else {
        NSLog(@"'%@' is no good.", text);
    }
}

谢谢你!它起作用了,但"和"似乎不起作用。因此有必要添加text.length>0。我推断[scanner scanDouble:&val]和[scanner isattend]看文本是否是一个数字?因为如果我只想要数字(甚至是负数),并且我想要->如果([scanner isattend])&&(accuration.text.length>0)),它工作得很好。此过程拒绝使用
@“
(空字符串)和只包含空格的字符串,因为它们不是数字,而您说您不想要负数。如果不太正确,我可以修改它。我自己做的。谢谢你乔希:-)谢谢你!它起作用了,但"和"似乎不起作用。因此有必要添加text.length>0。我推断[scanner scanDouble:&val]和[scanner isattend]看文本是否是一个数字?因为如果我只想要数字(甚至是负数),并且我想要->如果([scanner isattend])&&(accuration.text.length>0)),它工作得很好。此过程拒绝使用
@“
(空字符串)和只包含空格的字符串,因为它们不是数字,而您说您不想要负数。如果不太正确,我可以修改它。我自己做的。谢谢你乔希:-)