2011-02-24 3 views
1

Objective-C에서 문자열을 비교하기 위해 가능한 모든 작업을 시도했습니다.objective-c에서 변수의 문자열을 비교하십시오.

비교 : isEqualToString :

내가

if ([string1 compare:@"sometext"]) 
{ 
//dostuff 
} 

을 수행 할 때 그것은 완벽하게 작동하지만 문자열 2와 같은 변수를 사용하는 나는 경우는 항상 실패합니다.

if ([string1 compare:string2]) 

는 또한
if ([string1 compare:(@"%@", string2)]) 

을 시도했지만 작동하지 않는 것 같습니다. 내가 isEqualToString 이러한 모든 방법을 시도

NSString *string1 = "eb121296f0ed90be93578e50bedb27e3" 
NSString *string2 = "eb121296f0ed90be93578e50bedb27e3" 

: 다음 두 문자열의

내용은 같은 MD5 체크섬 있습니다뿐만 아니라, 어떤 결과없이 ...

가 나인가, 아니면 OBJ-C입니다 나를 미치게 만들어? 사전에 감사합니다, WOUTER

답변

2

당신은 쓸 필요가

if ([string1 compare:string2] == NSOrderedSame) 
+2

NSOrderedSame이 0이므로'-compare'의 결과를 부울로 검사하면 일반적으로 생각했던 것과 반대가됩니다. –

3

죄송합니다,하지만 당신은 문자열의 순서를 얻을하거나 동일한 경우 단지 참조하려고 어쩌면 내가 잘못 읽고있어 끈. 당신이 평등을 시험하는 것이라면 이것을 시도하십시오.

는 의견

이 시도있는 NSData 형식의 문자열을 생성하기 때문에 이후에 편집.

NSString *string2 = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

if ([string1 isEqualToString:string2]) { 
    // do stuff 
} 
+0

그게 전부 문제 야. 그는 string2를 유효한 것으로 생각하지 않습니다. @ "content_of_string2"를 입력해야하지만, 실제로 변수가 필요합니다. –

+0

문자열이 유효합니까? 코드에서 "체크섬"과 같지만 정의 된 경우 "@"이 누락되었습니다. 그렇지 않으면 정확히 어떻게 정의하고 있습니까? – Abizern

+0

죄송합니다. 예에서 @가 빠졌습니다. 실제로 이것들은 다음과 같이 정의됩니다 : NSString * checkFromS3 = [dictionary objectForKey : @ "Etag"]; 및 NSString * chcksum = [NSString stringWithFormat : @ "% @", checksumData]; 여기서 checksumData는 로컬 파일에서 가져옵니다. NSLogged 그들과 모두 동일합니다 –

관련 문제