2009-12-31 56 views
4

確實NSMutableDictionary的鍵值只能是字符串?NSMutableDictionary鍵值

我試圖使用對象,但我得到一個警告。

+3

當使用鍵值編碼時,鍵必須是字符串;但除此之外,它們可以是任何實現NSCopying – newacct 2009-12-31 04:24:51

回答

6

docs

一般來說,密鑰可以是任何對象 (只要它符合 NSCopying協議見下文),但 注意,使用鍵 - 值編碼 時密鑰必須是字符串(請參閱 鍵值編碼基礎知識)。

你會得到什麼警告?

+0

的事情,因爲事實證明我的課沒有實現協議 – Mel 2009-12-31 03:49:16

+0

耶 - 絕對要確保在對象中實現「散列」方法。否則,您可以在字典中看到兩個不同的對象。 – 2009-12-31 06:21:40

3

您可以使用任何對象,但對象必須實現-[NSObject hash],-[NSObject isEqual:]NSCopying協議。

+0

所有從NSObject繼承的對象都實現了'-hash'。只有當你重寫'-isEqual:'時,你必須確保'-hash'與'-isEqual'兼容:' – newacct 2009-12-31 04:27:39

0

如果你看一看的NSMutableDictionary的頭文件,附加功能可以採取ID作爲關鍵:

- (void)setObject:(id)anObject forKey:(id)aKey; 
- (void)removeObjectForKey:(id)aKey; 

所以,你可以使用幾乎任何東西作爲鍵和值。