objective-c / cocoa-touch - 两个NSStrings之间的比较失败,即使它们是相同的

时间:2010-09-30 00:29:57

标签: iphone objective-c cocoa-touch

我有一个比较两个NSStrings的if语句,一个是来自UITextField的用户输入,另一个是从0-9(含)之间的随机整数创建的NSString,但是每次比较都失败,即使它们是相同的,也显示在来自NSLog调用的日志。所以任何人都可以在提供的代码中看到我做错了什么?

-(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];  
}

1 个答案:

答案 0 :(得分:3)

您应该将字符串与- (BOOL) isEqualToString- (BOOL) isEqual ==进行比较,如果两个指针指向同一地址,则仅返回true