【问题标题】:How do I access the keys of a NSMutableDictionary?如何访问 NSMutableDictionary 的键?
【发布时间】:2009-07-16 18:49:53
【问题描述】:
NSMutableDictionary *bookmarks = [NSMutableDictionary dictionary];

[bookmarks setObject:[NSURL URLWithString:(NSString *) @"http://stanford.edu"] forKey:
@"Stanford University"];
[bookmarks setObject:[NSURL URLWithString:(NSString *) @"http://apple.com"] forKey:
@"Apple"];
[bookmarks setObject:[NSURL URLWithString:(NSString *) @"http://itunes.stanford.edu"] forKey:
@"Stanford on iTunesU"];
[bookmarks setObject:[NSURL URLWithString:(NSString *) @"http://stanfordshop.com"] forKey:
@"Stanford Mall"];

NSEnumerator *browser = [bookmarks keyEnumerator];
id each;
NSURL *url;
while ((each = [browser nextObject])) {
url = [bookmarks objectForKey:(NSString *)each];
NSLog('%@'", url);

我意识到斯坦福大学的 iPhone 编程产品已经被打败了(我敢肯定)。我只是在找出如何使用 URL 打印密钥时遇到了一些麻烦。我也不知道如何只打印以斯坦福开头的密钥。不过我知道这是 NSString 的一种方法。

【问题讨论】:

    标签: iphone key nsdictionary nsmutabledictionary


    【解决方案1】:
    for (NSString * key in [bookmarks allKeys])
    {
      if ([key hasPrefix:@"Stanford"])
      {
        NSLog(key);
      }
    }
    

    【讨论】:

      【解决方案2】:

      在某些情况下,使用“通过测试”系列方法最清楚地完成过滤集合,尽管在这种简单的情况下看起来更复杂。

      NSArray *keys = [bookmarks allKeys];
      NSArray *stanfordKeys = [keys objectsAtIndexes:[keys indexesOfObjectsPassingTest:^BOOL(NSString *key, NSUInteger idx, BOOL *stop) {
          return [key hasPrefix:@"Stanford"];
      }]];
      NSLog(@"%@", stanfordKeys);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多