2011-08-03 3 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 // 
    } 

여기에서 처음 세 조건은 참입니다. 마지막으로 flag11이 1이기 때문에 분명히 TRUE 여야합니다.

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 

한 가지는 당신이 텍스트를 필요로하지 않는 하나 인 텍스트 필드 2를 넣어했다 : 당신이보고 싶다면 여기에 코드입니다. (웃음) 확신 할 수있는 유일한 것은 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

관련 문제