在IF条件声明中可能出现什么问题?

时间:2011-08-03 19:17:37

标签: 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)))
    {
               NSLog(@"Please display me");

               // Some statements //
    }

此处,前三个条件为TRUE。由于flag11为1,最后一个显然应该为TRUE。

错误Current language: auto; currently objective-c (gdb)Program received error: SIGABRT错误,未按预期输入IF内部声明。


注意: 如果我删除flag11,而我只有这四个条件,那就可以了!我想知道的是,为什么在flag11添加到代码时报告错误。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这很奇怪。我制作了一个示例项目,其中包含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

我坚持的一件事是你把textField2放在一个不需要任何文本的地方。 (笑)我想唯一可以确定的是,4个文本字段连接到正确的IBOutlet,并且文件的所有者也是每个文本的委托。希望有所帮助!