哪些类可以用作NSDictionary中的键?

时间:2011-07-04 15:45:49

标签: iphone ios objective-c foundation

我们可以只使用NSString对象作为NSDictionary中的键吗?我们如何知道哪些对象可以使用哪些不可以使用?

2 个答案:

答案 0 :(得分:6)

来自documentation

  

通常,密钥可以是任何对象(前提是它符合NSCopying协议),但请注意,使用键值编码时,密钥必须是字符串(请参阅“Key-Value Coding Fundamentals”

因此,您可以使用除字符串之外的任何可复制的内容,但它们在使用KVC时会出现问题。我只是使用字符串来保证事物的安全,一致和简单。

答案 1 :(得分:2)

您可以使用符合NSCopying的任何内容。也就是说,您可以使用id - 类型对象,只要它们符合NSCoding协议即可。

在密钥为NSString的情况下,调用isEqualToString:进行检索。否则,在对象上调用isEqual:以确定密钥是否与请求的密钥匹配。

密钥(及其价值)不能是nilNULL。但是,它们可以是[NSNull null]