2012-02-10 20 views
8

我瞭解使用常數在NSDictionary中你們的名字,以避免錯別字(MYNAME會自動完成VS @「MYNAME」不會)。使用NSDictionary時使用常量嗎?

我與一箇中等大小的詞典,現在和幾次工作,我已經misstyped鍵名,不得不花費一些時間跟蹤,其中我想念拼寫單詞。

我想知道,你認爲它的價值,而建立一個常量命名方案?

+2

是的,如果你使用他們製造了很多。它也使得重構(錯誤,重命名鍵)更容易。 – Costique 2012-02-10 17:28:56

回答

21

是的,但我建議適當定義字符串常量,而不是#define語句爲你的字符串,因爲字符串常量是類型安全的,每引用將使用相同的實際字符串對象,這就提高了使用isEqualToString:來比較它們的性能。

要定義一個私人字符串常量,你可以把這個在您的.m文件:

static NSString *const MyConstant = @"MyConstant"; 

要公開,你可以把這個在您的.h文件,而不是,或者可以拆分定義通過把這個在您的.h:

extern NSString *const MyConstant; 

這在.m文件:

NSString *const MyConstant = @"MyConstant"; 
+3

+1非常好的答案和完全的路要走 - 希望這將被我的一些同事不斷使用定義這些東西讀取;雷電將衝上馬桶! – Till 2012-02-10 21:18:35

3

是的,這是值得的。 一致性在這樣的事情你會說:它減少了錯誤,並節省您的時間。

4

我通常創建一個文件GlobalDefinitions.h和地點宏,我可以在代碼而不是魔法字符串使用。

.h文件中

#define PERSON_NAME @"Person_name" 
#define PERSON_BDAY @"Person_bday" 

通過包括.h文件,你現在可以訪問你的值,像這樣

[dictionary objectForKey:PERSON_NAME]; 
+1

請注意,常量字符串比#def'd字符串更好。看到http://stackoverflow.com/questions/538996/constants-in-objective-c – 2012-02-10 17:34:23

+0

同意 - 請參閱我的答案下面如何定義字符串常量。 – 2012-02-10 17:34:54

+0

我同意尼克的回答。 – 2012-02-10 17:36:37