Iphone 例外情况<;UITextField>;,崩溃应用程序

Iphone 例外情况<;UITextField>;,崩溃应用程序,iphone,ios,objective-c,xcode,uitextfield,Iphone,Ios,Objective C,Xcode,Uitextfield,这就是我得到的 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't do regex matching on object <UITextField: 0x7165730; frame = (121 208; 179 30); text = 'mail@test.com'; clipsToBounds = YES; opaque = NO; autoresize = R

这就是我得到的

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't do regex matching on object <UITextField: 0x7165730; frame = (121 208; 179 30); text = 'mail@test.com'; clipsToBounds = YES; opaque = NO; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7166ca0>; layer = <CALayer: 0x715ed50>>.'
*** First throw call stack:
(0x1c94012 0x10d1e7e 0xbfbb5e 0xb38bae 0xb383dc 0xb37e9a 0x3c04 0x29a9 0x10e5705 0x1c920       0x1c8b8 0xdd671 0xddbcf 0xdcd38 0x4c33f 0x4c552 0x2a3aa 0x1bcf8 0x1befdf9 0x1befad0 0x1c09bf5 0x1c09962 0x1c3abb6 0x1c39f44 0x1c39e1b 0x1bee7e3 0x1bee668 0x1965c 0x1f95 0x1e95)
libc++abi.dylib: terminate called throwing an exception
如果我评论应用程序是否正常,如果不正常,将崩溃


提前感谢

您试图在
UITextField
对象上测试正则表达式,而我假设您打算在它的
text
属性上测试它

编辑自OP编辑的问题 请注意这一行:

return [emailTest evaluateWithObject:email];

“email”对象是文本字段,而不是字符串。您的字符串被称为
mail
(它作为一个参数传递到方法中。

您试图在
UITextField
对象上测试正则表达式,而我假设您想在它的
text
属性上测试它

编辑自OP编辑的问题 请注意这一行:

return [emailTest evaluateWithObject:email];

您的“email”对象是您的文本字段,而不是字符串。您的字符串称为
mail
(它作为参数传递到方法中。

如果您试图将UITextField对象传递到regex,请确保发送到regex的对象是NSString,否则将出现此错误

你应该使用类似于

NSString *myString = textField.text;
然后将该字符串传递给正则表达式

如果要经常使用regex函数,可能需要进行检查,以确保传递的变量是NSString,以防止将来出现任何异常

if ([myString isKindOfClass:[NSString class]]) { /* Code */ }

如果试图将UITextField对象传递给正则表达式,请确保发送给正则表达式的对象是NSString,否则将出现此错误

你应该使用类似于

NSString *myString = textField.text;
然后将该字符串传递给正则表达式

如果要经常使用regex函数,可能需要进行检查,以确保传递的变量是NSString,以防止将来出现任何异常

if ([myString isKindOfClass:[NSString class]]) { /* Code */ }

问题在于这一行:

return [emailTest evaluateWithObject:email];
您需要将其更改为:

return [emailTest evaluateWithObject:email.text];


问题在于这一行:

return [emailTest evaluateWithObject:email];
您需要将其更改为:

return [emailTest evaluateWithObject:email.text];


您需要提供一些代码来显示文本字段和/或试图执行的正则表达式的设置。My textfield是一个普通的textfield,我的意思是界面生成器中的UITextField。粘贴您的代码。我们可以帮助您better@rokimoki:没有任何代码,我们如何识别错误?@rokimoki:我发现了问题,补充了我的答案。P请检查是否需要提供一些代码来显示文本字段和/或试图执行的正则表达式的设置。My textfield是一个普通的文本字段,我的意思是界面生成器中的UITextField。粘贴您的代码。我们可以帮助您better@rokimoki:没有任何代码,我们如何识别错误?@rokimoki:我发现了问题,ad请检查我的答案是否正确。我正在使用正则表达式检查我的电子邮件是否正确,但我正在检查一个变量,而不是从文本字段,我的意思是:NSString*mail=[email.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];然后如果([self validatedemail:mail])没关系@Jasarien,你的第一个答案是正确的。我输入了错误的变量,我再次阅读了它,我意识到。谢谢你的帮助!你在某些方面是正确的,我正在使用正则表达式检查我的电子邮件是否正确,但我正在检查一个变量,而不是从文本字段,我的意思是:NSString*mail=[email.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];如果([self ValidateEmail:mail])没问题@Jasarien,您的第一个答案是正确的。我输入了错误的变量,我再次阅读了它,我意识到了这一点。感谢您的帮助!