2011-03-23 6 views
0

안녕하세요. 내 문자열이 비어 있지 않고 string1과 같지 않은지 테스트 할 때 문제가 있습니다. 문제가 있지만 작동하지 않습니다.간단한 불리언 테스트가 작동하지 않습니다.

내 코드 : 그것을 할

NSUserDefaults *namePrefs = [NSUserDefaults standardUserDefaults]; 
NSString *savedName = [namePrefs stringForKey:@"myKey"]; 

if ((savedName != nil)&&([savedName isEqualToString:@"string1"])){ // 

     [self myFunction]; 

    } 

savedName이 괜찮 nil을하지 않을 때 들어간다

그것의 값이 nil이 아니고, 또한 괜찮 STRING1하지 때 입력

하지만 savedName이 string1 일 때 입력됩니다. 이유는 무엇입니까? 그것을 통해 UR 실행 조건을 satifing 때문에 다음이 블록에 입력합니다 savedname = 문자열 1 경우 어떤 도움 안녕

답변

2

에 대한

덕분에 예는 들어갑니다.

savedname! = nil이 사실

savedname는 ==

참 문자열 1은 왜 블록에 출입 할 수 없다. 그것은 bcoz 그것을 입력 만족할 것입니다 UR 상태.

if ((savedName != nil)&&([savedName isEqualToString:@"string1"])){ 

변화 : 여기에 말했다 때문에

+0

죄송합니다 (savedName isEqualToString : @ "string1"]) "!" – Csabi

4

(savedName != nil) && ([savedName isEqualToString:@"string1"]) 

이됩니다

if ((savedName != nil)&&(![savedName isEqualToString:@"string1"])){ // 
5

당신은 단순히 "하지"조건에 누락 savedNamenil이 아니고 주어진 문자열과 같을 때 true가됩니다. 이 대신 원하는 : nil 객체에 보낸 메시지 NO를 반환하기 때문에

(savedName != nil) && (![savedName isEqualToString:@"string1"]) 

는 또한, 당신은 첫 번째 부분을 삭제할 수 있습니다 :

![nil isEqualToString:@"string1"] ≈ !NO ≈ YES 

따라서, nil 문자열이 @"string1"에서 다른 것으로 간주됩니다. 논리적으로 들립니다.

관련 문제