Ios 升级sdk后的代码更改行为?

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:@"

我正在尝试为iOs 7优化我的应用程序,但仍然以iOs 6为目标

我有2个文本字段用于验证电子邮件输入,但它失败了

我是这样做的:

    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
).非常感谢你的解释