Ios 升级sdk后的代码更改行为?
我正在尝试为iOs 7优化我的应用程序,但仍然以iOs 6为目标 我有2个文本字段用于验证电子邮件输入,但它失败了 我是这样做的:Ios 升级sdk后的代码更改行为?,ios,objective-c,ios7,Ios,Objective C,Ios7,我正在尝试为iOs 7优化我的应用程序,但仍然以iOs 6为目标 我有2个文本字段用于验证电子邮件输入,但它失败了 我是这样做的: if ([email.text isEqualToString:confirm_email.text]) { //process } else{ //display mismatch error UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"
if ([email.text isEqualToString:confirm_email.text]) {
//process
}
else{
//display mismatch error
UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"Email mismatch"
message:@"Your email does not match the confirmation!"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil];
[alertView show];
}
现在它在iOS 6中不起作用,而只在iOS 7中起作用,它会显示错误。
我没有真正接触到代码,我不知道为什么行为会改变。如果一个
UITextField
没有任何用户文本,它在iOS 7上返回nil
,但在iOS 6上返回空字符串(@“
)。您看到的行为是因为如果[email.text isEqualToString:confirm_email.text]
中的任一文本字段为nil
,它将始终计算为NO
粘贴有关错误的信息-put断点,并为我们提供有关执行该代码时出错的更多信息。这不是编译器错误,我只是显示一个alertBox,声明它们不会同时在.text变量上匹配。可能其中一个是nil。我只是记录它们它们都是(null)
,为什么是that@downvoters,至少评论一下,这样我就可以改进我的问题了,但是,在我升级sdk之前,您如何解释它在iOS 6上工作正常?使用iOS 6 sdk编译并在iOS 7上运行使用了一种特殊的兼容模式(与您当前的逻辑兼容),但是使用iOS 7 sdk编译会跳过此模式并将您置于iOS 7逻辑(返回nil
).非常感谢你的解释