2013-02-02 17 views
1

這是寫這個if if代碼檢查的最好方法嗎?在字典中的語言ID如何以更好的方式檢查代碼?

// set the default to Italy if countrySaved is null 
if (lang == NULL) { 
    lang = @"it"; 
} 

// otherwise set the correct lang based on the country chosed and saved in nsuserdefaults 
if ([countrySaved isEqual:@"Brazil"]) { 
    lang = @"br"; 
} 

else if ([countrySaved isEqual:@"Spain"]) { 
    lang = @"es"; 
} 

else if ([countrySaved isEqual:@"Italy"]) { 
    lang = @"it"; 
} 

else if ([countrySaved isEqual:@"United States"]) { 
    lang = @"us"; 
} 

else if ([countrySaved isEqual:@"United Kingdom"]) { 
    lang = @"uk"; 
} 

感謝您的幫助

+1

爲了將來的參考,像這樣的問題(用於工作代碼/優化)對於StackExchange站點是完美的:[CodeReview](http://codereview.stackexchange.com/) – jhilgert00

回答

13

商店:

NSDictionary *languageIDs = @{ 
    @"Brazil" : @"br", 
    @"Spain" : @"es", 
    @"Italy" : @"it", 
    @"United States" : @"us", 
    @"United Kingdom" : @"uk" 
}; 

然後簡單地從分配lang說詞典:

lang = languageIDs[countrySaved]; 

if (!lang) { 
    lang = languageIDs[@"Italy"]; 
} 

或更短的方式,我'd用三元運算符做:

lang = languageIDs[countrySaved] ?: languageIDs[@"Italy"]; 

而且你應該無論是從plist文件中加載它們,或使用NSString consts,以避免最終冗餘和分散在整個代碼,不可維護的文字。

+0

我不確定三元運算符是在這種簡單的情況下真正「更好」或者更難以閱讀和不必要 –

+0

@ SpathiWankenstein:我其實更喜歡三元論。公平點,但。修改後的答案顯示兩個選項。 – Regexident

+0

喜歡看這個答案增長+1並感謝使用新的'@'語法,它們被稱爲...文字?拳擊?我不記得了。 –

2

您可以使用字典(key="Country", value="code")進行高效操作。

相關問題