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

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

【问题讨论】:

    标签: objective-c cocoa-touch ios 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];
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-25
      • 2015-06-26
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多