1
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 的一种方法。

4

2 回答 2

3
for (NSString * key in [bookmarks allKeys])
{
  if ([key hasPrefix:@"Stanford"])
  {
    NSLog(key);
  }
}
于 2009-07-16T20:06:17.200 回答
0

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

NSArray *keys = [bookmarks allKeys];
NSArray *stanfordKeys = [keys objectsAtIndexes:[keys indexesOfObjectsPassingTest:^BOOL(NSString *key, NSUInteger idx, BOOL *stop) {
    return [key hasPrefix:@"Stanford"];
}]];
NSLog(@"%@", stanfordKeys);
于 2014-05-07T16:12:33.923 回答