2011-02-24 69 views
1

我已經嘗試了所有可能的事情來比較Objective-C中的字符串。比較來自變量的字符串objective-c

比較: isEqualToString:

它完美的作品,當我做

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

但是,如果我使用一個變量像字符串2失敗所有的時間。

if ([string1 compare:string2]) 

我也試過

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

,但它似乎並沒有工作。兩個字符串的

內容是MD5校驗,如:

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

我嘗試了所有這些方法isEqualToString:爲好,沒有任何結果...

是我還是爲OBJ-C快把我逼瘋? 由於提前, 沃特

回答

2

你需要寫

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

並且記住NSOrderedSame是0,因此檢查'-compare'作爲布爾值的結果通常會給你與你認爲的相反的結果。 – 2011-02-24 15:11:46

3

對不起,也許我誤讀,但你想獲得字符串的順序,或者只是看看他們是相同的串。如果你只是測試平等,試試這個。

評論

因爲要創建從一個NSData類型的字符串試試這個後編輯。

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

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

這就是整個問題。他不會將string2視爲有效。我必須鍵入@「content_of_string2」,但我真的需要變量。 – 2011-02-24 15:20:18

+0

字符串是否有效?你的代碼說他們是「喜歡」校驗和,但是如果他們這樣定義他們缺少「@」。你究竟如何定義他們呢? – Abizern 2011-02-24 15:33:25

+0

對不起,我在示例中錯過了@。實際上,它們是這樣定義的:NSString * checkFromS3 = [dictionary objectForKey:@「Etag」];和NSString * chcksum = [NSString stringWithFormat:@「%@」,checksumData]; checksumData來自本地文件。我NSLogged他們兩個,他們是一樣的 – 2011-02-24 15:39:05