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