Как мне получить доступ к ключам NSMutableDictionary? - PullRequest
1 голос
/ 16 июля 2009
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, хотя.

Ответы [ 2 ]

3 голосов
/ 17 июля 2009
for (NSString * key in [bookmarks allKeys])
{
  if ([key hasPrefix:@"Stanford"])
  {
    NSLog(key);
  }
}
0 голосов
/ 07 мая 2014

В некоторых ситуациях фильтрация коллекций выполняется наиболее четко с помощью семейства методов «прохождения теста», хотя в этом простом случае это выглядит сложнее.

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