我们可以只使用NSString对象作为NSDictionary中的键吗?我们如何知道哪些对象可以使用哪些不可以使用?
答案 0 :(得分:6)
通常,密钥可以是任何对象(前提是它符合
NSCopying
协议),但请注意,使用键值编码时,密钥必须是字符串(请参阅“Key-Value Coding Fundamentals”)
因此,您可以使用除字符串之外的任何可复制的内容,但它们在使用KVC时会出现问题。我只是使用字符串来保证事物的安全,一致和简单。
答案 1 :(得分:2)
您可以使用符合NSCopying的任何内容。也就是说,您可以使用id
- 类型对象,只要它们符合NSCoding
协议即可。
在密钥为NSString的情况下,调用isEqualToString:进行检索。否则,在对象上调用isEqual:以确定密钥是否与请求的密钥匹配。
密钥(及其价值)不能是nil
或NULL
。但是,它们可以是[NSNull null]
。