值/对象的 NSDictionary 键? [复制]

Posted

技术标签:

【中文标题】值/对象的 NSDictionary 键? [复制]【英文标题】:NSDictionary Key For Value/Object? [duplicate] 【发布时间】:2011-05-25 07:26:27 【问题描述】:

我们能否通过传递特定值或对象来获取NSDictionary 中对象的键?

【问题讨论】:

【参考方案1】:

-[NSDictionary allKeysForObject:] 返回其对象与传递的对象匹配的所有键的NSArray,其中“匹配”由isEqual: 确定。

【讨论】:

但请记住:它为匹配 'isEqual' 而不是 '==' 的对象提供所有键 @Kai:是的。我也许还应该添加一条关于它返回 NSArray 的注释,尽管从方法名称中应该可以清楚地看到。 如果这不是 FGITW 问答,我不知道是什么。五个赞成票只是因为我的浏览器中有一个搜索快捷方式。【参考方案2】:

要以更具体的方式回答您的问题,请使用以下命令获取特定对象的密钥:

NSString *knownObject = @"the object";
NSArray *temp = [dict allKeysForObject:knownObject];
NSString *key = [temp lastObject];

//"key" is now equal to the key of the object you were looking for

【讨论】:

如果对象不是字符串,将NSString替换为对象类。这是不言自明的。 您可能更喜欢lastObject 而不是objectAtIndex:0 以避免在没有此类键的情况下引发异常。 如果您使用的是最新的 SDK,甚至是 firstObject【参考方案3】:

这是获取对象第一个键的方法(如果它是NSString):

NSArray *keys = [yourDic allKeysForObject:yourObject];
NSString *yourKey;
if ([keys count] > 0) 
   yourKey = keys[0];

如果在字典中找不到该对象,则进行处理。

【讨论】:

以上是关于值/对象的 NSDictionary 键? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

按字母顺序对 NSDictionary 值进行排序

使用具有多个值的键创建 NSDictionary

转NSDictionary以及NSMutableDictionary的用法

NSDictionary 与自定义对象

NSDictionary 拒绝为其键设置值。

Swift 中的错误:(键:AnyObject,值:AnyObject)' 不能转换为 'NSDictionary'