我有一个比较两个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];
}
答案 0 :(得分:3)
您应该将字符串与- (BOOL) isEqualToString
或- (BOOL) isEqual
==
进行比较,如果两个指针指向同一地址,则仅返回true