复制没有空值的NSDictionary?

时间:2010-12-03 23:09:07

标签: iphone uitableview row nsdictionary

我正在尝试使用NSDictionary方法创建dictionaryWithDictionary。但是,我的第一个NSDictionary A可能有一些空值的键。如何创建没有任何空值键的B?我正在执行所有这一切,目的是使用与UITableView中每个非空键对应的行填充NSDictionary

2 个答案:

答案 0 :(得分: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];
    }

答案 1 :(得分: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];