Iphone 这个IF条件语句可能有什么错误?

Iphone 这个IF条件语句可能有什么错误?,iphone,objective-c,Iphone,Objective C,这里面可能有什么错误 int flag11 = 1; if (([self.textField1.text length]>0) && ([self.textField4.text length]>0) && ([self.textField3.text length]>0) && (([self.textField2.text length]>0) || (flag11))) {

这里面可能有什么错误

int flag11 = 1;


if (([self.textField1.text length]>0) &&  
    ([self.textField4.text length]>0) && 
    ([self.textField3.text length]>0) && 
   (([self.textField2.text length]>0) || (flag11)))
    {
               NSLog(@"Please display me");

               // Some statements //
    }
在这里,前三个条件是正确的。最后一个应该是真的,因为flag11是1

出现错误
当前语言:auto;当前目标-c
(gdb)
程序收到错误:SIGABRT
并且未按预期输入
IF
语句内部



注意:如果我删除了
flag11
,并且我只有这四个条件,它就可以工作了!我想知道的是,当
flag11
添加到代码中时,它为什么会报告错误。

SIGABRT表示您正在尝试访问不存在的内容。您是否正确创建了所有文本字段和/或在IB中拖动了正确的连接?

这很奇怪。我制作了一个示例项目,其中有4个文本字段和一个按钮,该按钮连接到一个动作上,该动作执行您的检查,NSLog显示了结果,它似乎工作正常。如果您想查看以下代码:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITextFieldDelegate> {

  IBOutlet UITextField * textField1;
  IBOutlet UITextField * textField2;
  IBOutlet UITextField * textField3;
  IBOutlet UITextField * textField4;

}

@property (nonatomic, retain) IBOutlet UITextField * textField1;
@property (nonatomic, retain) IBOutlet UITextField * textField2;
@property (nonatomic, retain) IBOutlet UITextField * textField3;
@property (nonatomic, retain) IBOutlet UITextField * textField4;

- (IBAction)buttonPress;

@end

#import "ViewController.h"

@implementation ViewController

@synthesize textField1;
@synthesize textField2;
@synthesize textField3;
@synthesize textField4;

- (void)dealloc; {
  [super dealloc];
}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField; {
  return YES;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField; {
  if(textField == textField1){
    [textField1 resignFirstResponder];
  }
  else if(textField == textField2){
    [textField2 resignFirstResponder];
  }
  else if(textField == textField3){
    [textField3 resignFirstResponder];
  }
  else{
    [textField4 resignFirstResponder];
  }
  return YES;
}

- (IBAction)buttonPress; {

  int flag11 = 1;

  if (([self.textField1.text length]>0) &&  
      ([self.textField4.text length]>0) && 
      ([self.textField3.text length]>0) && 
      (([self.textField2.text length]>0) || (flag11)))
  {
    NSLog(@"Please display me");

    // Some statements //
  }
  else{
    NSLog(@"Nothing");
  }
}

@end
#导入
@界面ViewController:UIViewController{
IBOUTLE UITextField*TEXTFIELD 1;
IBOUTLE UITextField*textField2;
IBOUTLE UITextField*TEXTFIELD 3;
IBOUTLE UITextField*TEXTFIELD 4;
}
@属性(非原子,保留)IBOutlet UITextField*textField1;
@属性(非原子,保留)IBOutlet UITextField*textField2;
@属性(非原子,保留)IBOutlet UITextField*textField3;
@属性(非原子,保留)IBOutlet UITextField*textField4;
-(i动作)按钮按下;
@结束
#导入“ViewController.h”
@实现视图控制器
@综合文本字段1;
@综合文本字段2;
@综合文本字段3;
@综合文本字段4;
-(无效)解除锁定;{
[super dealoc];
}
-(BOOL)textField应该开始编辑:(UITextField*)textField;{
返回YES;
}
-(BOOL)textField应返回:(UITextField*)textField;{
如果(textField==textField1){
[textField1辞职第一响应者];
}
else if(textField==textField2){
[textField2辞职第一响应者];
}
else if(textField==textField3){
[textField3辞职第一响应者];
}
否则{
[textField4辞职第一响应者];
}
返回YES;
}
-(i动作)按钮按下;{
int flag11=1;
如果([self.textField1.text length]>0)和
([self.textField4.text length]>0)和
([self.textField3.text length]>0)和
(([self.textField2.text length]>0)| |(flag11)))
{
NSLog(@“请显示我”);
//一些声明//
}
否则{
NSLog(@“无”);
}
}
@结束

有一件事我被卡住了,就是你把textField2放在了不需要任何文本的地方。(lol)我想唯一要确保的是4个文本字段都连接到了正确的IBOutlet,并且文件的所有者也是每个字段的代理。希望有帮助

都做得很好!如果我移除标志11,并且我只有这四个条件,它就会工作。我想知道的是,当FLAG1添加到代码中时,它为什么会报告错误。关于将最后一行更改为
。||124;(flag11>0)
?单独填写文本字段1、3和4并尝试单击它?是的,我填写了文本字段1、3和4,然后按下了连接到-(iAction)按钮的按钮按;方法,效果很好。我想知道为什么它对你不起作用。就像我告诉过你的,他没有在iB中正确连接,请检查textfield2