2010-12-03 80 views
1

我試圖用dictionaryWithDictionary方法創建一個NSDictionary。但是,我的第一個NSDictionary A可能有一些空值的鍵。我如何創建沒有任何鍵值爲空的B?我正在做所有這些工作,用於填充UITableView,其中的行對應於NSDictionary中的每個非空密鑰。複製一個沒有空值的NSDictionary?

+2

在這種情況下,什麼是「空值」? NSDictionary不允許使用`nil`值。 – 2010-12-03 23:33:06

+0

變量爲空的鍵。 – 2010-12-03 23:37:02

回答

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];