2009-07-16 41 views
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的一种方法。如何访问NSMutableDictionary的键?

回答

3
for (NSString * key in [bookmarks allKeys]) 
{ 
    if ([key hasPrefix:@"Stanford"]) 
    { 
    NSLog(key); 
    } 
} 
+0

感谢您的帮助。 – nullArray 2009-07-16 20:32:34

0

在某些情况下,过滤集合与方法的“通过测试”家人最清楚做,虽然看起来在这个简单的例子更加复杂。

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