Я пытаюсь создать NSDictionary
с помощью метода dictionaryWithDictionary
. Однако мой первый NSDictionary
A может иметь несколько ключей с пустыми значениями. Как я могу создать B, у которого нет никаких ключей с пустыми значениями? Я делаю все это для заполнения UITableView
строками, которые соответствуют каждому непустому ключу в NSDictionary
.Копирование NSDictionary без пустых значений?
1
A
ответ
1
Как о чем-то вроде этого:
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
Вы также можете использовать тест блока, отфильтровывая ключи, значение которых имеет длину и создать свой новый словарь из этого.
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];
Что такое «пустое значение» в данном случае? NSDictionary не допускает значения «nil». – 2010-12-03 23:33:06
Ключ с переменной, которая является пустой. – 2010-12-03 23:37:02