2010-02-03 21 views
2

再次感謝您的幫助。在單個動作中識別多個字符串值

我有一個簡單的動作,檢查一個文本框的stringValue的,如果它匹配 - 狀態消息在第二個文本框將顯示:

if 

(textField.stringValue == (@"Whatever")){ 
[outputDisplay setStringValue:@"Success"]; 

我的問題是我如何實現多種輸入stringValue的選項這種方法?例如「無論」「無論1,無論2」都會在outputDisplay中返回「成功」。

謝謝。

保羅

回答

6

首先,檢查的NSString平等-s你應該使用-isEqualToString:==比較經常返回NO的指針值,即使兩個字符串的內容相同。

要檢查文本字段匹配多個字符串,你與||or)運算符將它們連接起來,讓您得到

NSString* st = textField.stringValue; 
if ([st isEqualToString:@"Whatever"] || [st isEqualToString:@"Whatever1"] || [st isEqualToString:@"Whatever2"]) { 
    [outputDisplay setStringValue:@"Success"]; 
+0

非常感謝你,肯尼。很有幫助。 Paul – paul 2010-02-03 19:11:13

+0

太棒了!謝謝! – Genevios 2015-04-03 22:05:59

9

創建一組答案你正在尋找和測試,如果字符串有問題在那裏。

NSSet *successStrings = [NSSet setWithObjects:@"Whatever1", 
               @"Whatever2", 
               @"Whatever3", 
               nil]; 
if ([successStrings containsObject:st]) { 
    [outputDisplay setStringValue:@"Success"]; 
} 

(陣列也將工作,而是一組是專門用於測試的成員,所以這是一個更適合我們在這裏做什麼。)

+0

這是很好的,當設置很大,你記得緩存集合。否則,構建集合的成本將壓倒測試成員資格的成本。 – kennytm 2010-02-03 21:48:19

+0

這是優化的可讀性和易於更新,而不是性能。即使在iPhone上,這兩種方式都不應該特別徵稅。我總是比較少用代碼,除非我已經分析並確定它會造成性能問題。 – Chuck 2010-02-03 21:56:07

+0

謝謝你。很有幫助。 Paul – paul 2010-02-04 02:52:23

相關問題