开发者

objective-c/cocoa-touch - comparison between two NSStrings failing even though they are identical

i have an if statement comparing two NSStrings, one is user input from a UITextField the other is a NSString created from random integers between 0-9 inclusive, however the comparison is failing everytime even thought they are the same which is shown in the log from an NSLog call. so can anyone see anything i'm doing wrong in the supplied code?

-(void) generateDecryptionCode{
    codeToConfirm = [NSString stringWithFormat:@"%i%i%i%i%i%i", arc4random()%10, arc4random()%10, arc4random()%10, arc4random()%10, arc4random()%10, arc4random()%10];
    numberToDecrypt.text = codeToConfirm;
}
- (void) decryptTimerFires{
    NSURL *beep = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/Beep.aif", [[NSBundle mainBundle] resourcePath]]];
    NSURL *buzz = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/Buzz.aif", [[NSBundle mainBundle] resourcePath]]];
        if(decryptTime > 0){
            decryptTime--;
            decryptLabel.text = [NSString stringWithFormat:@"%g",  (float)decryptTime/10];
        if(decryptTime%10 == 0){
            audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:beep error:nil];
            audioPlayer.numberOfLoops = 1;
            [audioPlayer play];
        }
    }
    else{
        audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:buzz error:nil];
        audioPlayer.numberOfLoops = 1;
        [audioPlayer play];
        [decryptTimer invalidate];
        decryptTimer = nil;
    }

}
-(void) stopDecrypt{
    NSLog(@"Stop Decrypt");
    [decryptTimer invalidate];
    decryptTimer = nil;

}
-(IBAction)decrypt{
    [self generateDecryptionCode];
    decryptTime = 200;
    decryptTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(decryptTimerFires) userInfo:nil repeats:YES];
    [decryptTimer fire];

}
- (void)dealloc {
    [decryptLabel release];
    [decryptButton release];
    [crackLabel release];
    [crackButton release];
    [numberToCrack release];
    [numberToDecrypt release];
    [audioPlayer release];
    [super dealloc];
}

-(void) enterDecryptKey{
    confirm = [[UIAlertView alloc] initWithTitle:@"Confirm Code" message:@"Please Input The Correct Code:"  delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Confirm Code", nil];
    inputCode = [[UITextField alloc] initWithFrame:CGRectMake(12, 45, 260, 25)];
    CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0, 60);

    [confirm setTransform:myTransform];
    [inputCode setBackgroundColor:[UIColor whiteColor]];
    [confirm addSubview:inputCode];
    [confirm show];
    [confirm release];
}


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
   NSLog(@"Enter code:");
    if(buttonIndex == 0){
        [confirm dismissWithClickedButtonIndex:0 animated:YES];
    }
    else if(buttonIndex == 1){
        NSLog(@"Code:%@/User Input:%@",codeToConfirm, inputCode.text);
        NSLog(@"comparing code...");
        if (inputCode.text == codeToConfirm) {
            NSLog(@"Code Correct");
            [self stopCrack];
            [self stopDecrypt];
        }
    }
}

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
{
    [inputCode resignFirstResponder];
    [inputCode removeFromSuperview];  
    [inputCode release开发者_开发技巧];  
}


You should compare the strings with - (BOOL) isEqualToString or - (BOOL) isEqual == will return only true if the two pointer point to the same address

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜