哪些类可以用作 NSDictionary 中的键?
我们可以只使用 NSString 对象作为 NSDictionary 中的键吗?我们如何知道哪些对象可以使用,哪些不能使用?
Can we use only NSString objects as key in an NSDictionary? How do we know which objects can be used and which cannot?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自文档:
因此,除了字符串之外,您还可以使用任何可复制的内容,但它们对于 KVC 来说会出现问题。我只是使用字符串作为键来保持安全、一致和简单。
From the documentation:
So you can use anything copyable besides strings, but they'll be problematic with KVC. I just use strings for keys to keep things safe, consistent and simple.
您可以使用任何符合 NSCopying 的内容。也就是说,您可以使用
id
类型的对象,只要它们符合NSCoding
协议即可。在键为 NSString 的实例中,则调用 isEqualToString: 进行检索。否则,对对象调用 isEqual: 以确定该键是否与请求的键匹配。
键(以及与此相关的值)不能为
nil
或NULL
。但是,它们可以是[NSNull null]
。You can use anything that conforms to NSCopying. That is, you can use
id
- type objects, as long as they conform toNSCoding
protocol.In instances where the key is NSString, then isEqualToString: is called for retrieval. Otherwise, isEqual: is called on the object to determine whether the key matches the requested key.
The key (and value for that matter) cannot be
nil
orNULL
. They can, however, be[NSNull null]
.