2011-08-03 20 views
0

這可能是什麼錯誤?這個IF-Conditional語句可能有什麼錯誤?

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。而最後一個顯然應該是TRUE,因爲flag11是1.

它發生了錯誤Current language: auto; currently objective-c (gdb)Program received error: SIGABRT,並且沒有像期望那樣進入IF聲明。


注:如果我刪除flag11,我剛纔那四個條件,它的作品!我想知道的是爲什麼當flag11被添加到代碼時報告錯誤。

回答

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 

一件事,我就死在了你把文字欄是不需要任何文字之一。 (大聲笑)我想唯一可以確定的是,4個文本框被連接到正確的IBOutlet,並且文件的所有者也是每個人的代表。希望有所幫助!

+0

單獨填寫textfields 1,3和4並嘗試點擊它? – Legolas

+0

是啊,我填充了textfields 1,3和4,然後按下了我連接到的按鈕 - (IBAction)buttonPress;方法,並且它工作正常。我想知道爲什麼它不適合你。 – msgambel

+0

就像我告訴過你的,他錯過了在iB中正確連線它,確保textfield2 –

0

SIGABRT意味着您正試圖訪問那些不在那裏的東西。你是否正確創建了所有的文本框?並且/或者在IB中拖動了正確的連接?

+0

這一切都做得很好!如果我刪除了國旗11,並且我只有這四個條件,它就可以工作。我想知道的是爲什麼當FLAG1被添加到代碼時報告錯誤。 – Legolas

+0

關於將最後一行更改爲「... ||」 (flag11> 0)'? –

+0

不起作用.. – Legolas