2013-05-05 3 views
-7

두 개의 문자열이 있습니다. 이 문자열은 같지 않지만 else 문은 항상 예라고 말합니다.다른 문이 작동하지 않는 경우 iOS

내 코드 이러한;

PFQuery *bilquery = [PFQuery queryWithClassName:@"Bildirim"]; 
    PFObject *saat = [bilquery getObjectWithId:@"lQTsXaBvuq"]; 
    NSString *asd = [saat objectForKey:@"gun"]; //asd is 06 or 07. 

    NSDate *currDate = [NSDate date]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; 
    [dateFormatter setDateFormat:@"dd"]; 
    NSString *dateString = [dateFormatter stringFromDate:currDate]; 
    int d = [dateString intValue] + 1; 
    NSString *dplus1 = [NSString stringWithFormat:@"%d",d]; 
    if ((dateString = asd)) { 
     NSLog(@"YES"); 
    } else { 
     NSLog(@"NO"); 
     // Bla bla bla 

    } 

NSString asd는 내 구문 분석 데이터베이스에 있습니다. 내 올바른 if else 문은 어디에 있습니까?

+4

당신은 한 걸음 뒤로 물러나와 언어의 기초를 배울 필요가있다. '= '연산자는 대입 연산자입니다. 두 객체를 비교하려면 isEqual : 메서드를 사용해야합니다. 두개의'NSString' 객체의 경우, isEqualToString :을 사용하십시오. – rmaddy

+0

@Salieh - 질문에 대한 답변을 얻은 후에는 "감사"해설로 질문을 삭제하거나 덮어 쓰지 마십시오. 비슷한 문제에 대한 답변을 찾는 다른 누구도 원래 질문을 볼 수 없으므로 말하십시오. – Tommy

+0

@ 토미 원래 콘텐츠를 복원하는 편집을 제안했지만 사회자는 부적절하다고 말합니다. 따라서 Salieh가 자신이 한 일을하는 것이 좋습니다. –

답변

3
if ((dateString = asd)) 

당신은, dateStringasd를 할당한다.
==으로 비교합니다.

그러나 NSString 인스턴스는 포인터이므로 ==을 사용하여 문자열 값을 비교할 수 없습니다.
사용 :

, 난 당신이 정말 어떤 목표 - C의 기초를 배울 시간이 좀 걸릴해야한다고 생각했다되고 그게
if([ str1 isEqualToString: str2 ]) 

...

1

=은 동등성을 테스트하는 연산자가 아닙니다.

== 평등을 테스트하지만 포인터를 사용하고 있기 때문에 여전히 올바르지 않습니다.

자세히 ( Checking for equality in Objective-C)이 답변을 참조하십시오, 그러나 당신은이 테스트를 사용해야합니다 : 단일 =를 사용할 때 다음

if([dateString isEqualToString:asd])

관련 문제