可能重复:
检查电子邮件地址在 iOS 上是否有效
我可以在 iOS 中使用什么正则表达式语法来验证我的UITextField.text
价值?有没有办法让我检查是否有其他UITextField
或UITextView
丢失?
我可以用它来测试空白值吗:
if(content.text == nil){
//do something
}
else{
//proceed with next course of action
}
可能重复:
检查电子邮件地址在 iOS 上是否有效
我可以在 iOS 中使用什么正则表达式语法来验证我的UITextField.text
价值?有没有办法让我检查是否有其他UITextField
或UITextView
丢失?
我可以用它来测试空白值吗:
if(content.text == nil){
//do something
}
else{
//proceed with next course of action
}
为了绝对确定您已经测试了一个空值,您还应该测试一个空字符串。
这个结构做到了,并且比 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];
因此,对于第一部分(电子邮件验证),这是我要做的:
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 进行检查,否则您可以导航视图层次结构以找到它们然后进行检查,您是否遵循?
简单设置
[textField setKeyboardType:UIKeyboardTypeEmailAddress];
您将避免尝试正确进行电子邮件验证的痛苦。