1

可能重复:
检查电子邮件地址在 iOS 上是否有效

我可以在 iOS 中使用什么正则表达式语法来验证我的UITextField.text价值?有没有办法让我检查是否有其他UITextFieldUITextView丢失?

我可以用它来测试空白值吗:

if(content.text == nil){
    //do something
}
else{
    //proceed with next course of action
}
4

3 回答 3

2

为了绝对确定您已经测试了一个空值,您还应该测试一个空字符串。

这个结构做到了,并且比 using 减少了打字isEqualToString:,但这主要是个人喜好的问题:

if ( content.text == nil || content.text.length == 0 ) {

}

对 Objective-C 运行时有更深入了解的人可能会指出,测试 fornil是多余的,因为发送消息到nil总是会产生 nil(或 0),content.text.length如果是,则 nil也是如此content.text。此外,如果您的周围充满了核心 C 编码人员,他们可能会同样指出,在 if 语句中测试 0 是针对懦夫的。

因此,键入可以减少到以下内容,但代价是您的代码更加清晰:

if ( !content.text.length ) {

}

至于测试邮件地址的正则表达式,这里有一个很好的讨论 Cocoa 中的正则表达式可以这样完成:

NSPredicate *regexPred = [NSPredicate predicateWithFormat: @"self matches[cd] '<email regex here>'"];
BOOL match = [regexPred evaluateWithObject: content.text];
于 2012-06-17T16:31:49.093 回答
2

因此,对于第一部分(电子邮件验证),这是我要做的:

if (content.text == nil //check if its nil (i dont think this is actually possible but who knows
    || content.text.length == 0 //check for the length to have some sort of magnitude
    || [content rangeOfString:@"@"].location == NSNotFound) { //check if its an email they put in
//do your error stuff
}

现在要检查其他文本字段/文本视图,您需要显示更多代码。很有可能,但这取决于您如何实现该类。如果您将它们作为 ivars,您可以直接对 ivars 进行检查,否则您可以导航视图层次结构以找到它们然后进行检查,您是否遵循?

于 2012-06-17T16:38:37.143 回答
-4

简单设置

[textField setKeyboardType:UIKeyboardTypeEmailAddress];

您将避免尝试正确进行电子邮件验证的痛苦。

于 2012-06-17T16:40:19.953 回答