2013-05-30 6 views
0

내 앱에서 맞춤 키보드를 만들었습니다. 사용자가 스페이스 바를 누르면,이 코드를 실행합니다 :"if"문이 제대로 작동하지 않습니까?

NSString *lastChar = [myTextField.text substringFromIndex:[myTextField.text length] - 1]; 

NSLog(@"lastChar is `%@`", lastChar); 

if (lastChar != @" ") 
{ 
    NSString *currentString = [NSString stringWithFormat:@"%@ ", myTextField.text]; 
    [myTextField setText:currentString]; 
} 

그리고 사용자가 사용했던 마지막 심볼이 space 인 경우 검사는, 그가 다시 (내 경우에는 필요 없음)을 사용할 수 없습니다합니다. 그러나 if statement 아래의 코드는 여전히 실행 중입니다. 따라서 NSLog으로 확인했으며, 마지막 문자가 space 인 경우에도 if statement 아래의 코드가 실행됩니다. 어떻게됩니까? 누군가 내 어리석은 실수를 지적 할 수 있습니까? 미리 감사드립니다.

UPDATE : 미안 해요, 난 항상 목표 - C에서 문자열을 비교하는 방법을 잊어, 이미 질문을 신고 한, 당신의 anwsers 당신에게 모두 감사합니다.

+0

'if (lastChar! = @ "")'를 사용해 보셨습니까? (if 문에 다른 공백 추가). 추가 공간이 있거나없는 if ([lastChar isEqualToString : @ ""]))'을 시도하지 않는 경우. – jfuellert

+0

[myTextField.text length] - 2가 아니어야합니까? – Vignesh

+2

이것은 Xcode와 전혀 관련이 없습니다 ** **. –

답변

5

그것은 아니에요 if 문 : 목표 C에서 NSString의는 isEqualToString: 방법과 비교해야하지 참조 평등 확인 != 또는 == 사업자와 :

if (![lastChar isEqualToString:@" "]) { 
    ... 
} 
0

대신

if (lastChar! = @ "")

lastChar으로

if (![lastChar isEqualToString:@" "]) 

char하지

사용, 그것은 NSString 개체입니다.

0

수천 번 묻습니다. Objective-C (및 다른 많은 언어들)의 문자열을 비교할 수는 없습니다. isEqualToString:이라고하는 비교기 방법을 사용해야합니다.

if (![lastChar isEqualToString:@" "]) { 

} 
+2

1000 번 질문을 받았다면 대답하지 말고 복제본으로 닫으십시오. –

관련 문제