Копирование NSDictionary без пустых значений? - PullRequest
1 голос
/ 04 декабря 2010

Я пытаюсь создать NSDictionary методом dictionaryWithDictionary.Тем не менее, мой первый NSDictionary A может иметь несколько ключей с пустыми значениями.Как я могу создать B, у которого нет ключей с пустыми значениями?Я делаю все это для заполнения UITableView строками, которые соответствуют каждому непустому ключу в NSDictionary.

Ответы [ 2 ]

1 голос
/ 04 декабря 2010

Как насчет этого:

NSMutableDictionary *destDictionary = [NSMutableDictionary dictionaryWithCapacity:[sourceDictionary count]];
NSEnumerator *keyEnumerator = [[sourceDictionary allKeys] objectEnumerator];
id key;
while ( key = [keyEnumerator nextObject] )
    {
    NSString *object = [sourceDictionary objectForKey:key];
    if ([object length] == 0)
        continue;
    [destDictionary setObject:object forKey:key];
    }
0 голосов
/ 04 декабря 2010

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

NSSet *keySet = [dictionary keysOfEntriesPassingTest:
                 ^(id key, id obj, BOOL *stop) {
                   return (BOOL)[obj length];
                 }];

NSArray *keys = [keySet allObjects];
NSArray *nonEmptyObjects = [dictionary objectsForKeys:keys notFoundMarker:@""];
NSDictionary *newDict = [NSDictionary dictionaryWithObjects:nonEmptyObjects
                                                    forKeys:keys];
...