2009-07-16 131 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);