2011-08-03 9 views
0

これでエラーが発生する可能性はありますか?このIF条件文で何が間違っている可能性がありますか?

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 // 
    } 

ここで、最初の3つの条件はTRUEです。そして最後のものは明らかにflag11が1であるため真でなければなりません。

Current language: auto; currently objective-c (gdb)Program received error: SIGABRTで壊れて、予想通りにIFステートメントに入りません。


注:私はflag11を削除し、私はちょうどそれらの4つの条件を持っている場合は、それは働きます!私が知りたいのは、flag11がコードに追加されたときにエラーが報告される理由です。

答えて

0

。私は4つのテキストフィールドとあなたのチェックを行うアクションに接続されたボタンを備えたサンプルプロジェクトを作成しました.SNSLogはその結果とうまく動作していました。あなたが見たい場合はここではコードです:私はに引っかかってしまった

#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に接続されていることと、ファイルの所有者が各自のデリゲートであることを確認する唯一の方法だと思います。希望が助けてくれる!

+0

テキストフィールド1、3、4だけを入力してクリックしますか? – Legolas

+0

ええ、テキストフィールド1,3、および4を塗りつぶしてから、 - (IBAction)buttonPressに接続したボタンを押しました。メソッド、それは正常に働いた。なぜそれがあなたのために働いていないのだろうか。 – msgambel

+0

私はあなたに言ったように、彼はiBで正しくワイヤリングするのを忘れていました。確かにtextfield2をチェックしてください –

0

SIGABRTは、あなたがそこにはない何かにアクセスしようとしていることを意味します。すべてのテキストフィールドを適切に作成したか、またはIBで正しい接続をドラッグしましたか?奇妙な

+0

すべてがうまくいっています!私がフラグ11を削除して、それらの4つの条件だけを持っていれば動作します。私が知りたいのは、FLAG1がコードに追加されたときにエラーが報告される理由です。 – Legolas

+0

最後の行を '... ||に変更することについて(flag11> 0) '? –

+0

は機能しません。 – Legolas

関連する問題