2012-02-17 82 views
1

我有一個NSArray與幾個NSDictionaries。我想創建一個新的NSArray,其編號爲NSDictionaries,但我只需要字典中的某些鍵,而不是全部。如何修改字典數組?

示例:

數組有2個字典。每本字典都有關鍵字name, age, address, email, phone

我想新的數組,也有2個字典,但只有name and address鍵。

回答

1

我會做這樣的事情:

NSMutableArray *replacementArray = [NSMutableArray array]; 

[existingArray enumerateObjectsUsingBlock: 
    ^(NSDictionary *dictionary, NSUInteger idx, BOOL *stop) 
    { 
     NSDictionary *newDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[dictionary objectForKey:@"name"], @"name", [dictionary objectForKey:@"address"], @"address", nil]; 
     [replacementArray addObject:newDictionary]; 
    } 
]; 
+0

錯誤說缺少方法sentenial調度。 – Jon 2012-02-17 18:41:39

+0

當我第一次發佈我的答案時,我在'dictionaryWithObjectsAndKeys:'的參數末尾丟失了'nil',但是我在30秒後放入了它。這應該是問題,假設您在修復代碼之前獲得了代碼。 – yuji 2012-02-17 18:43:36

+0

其實我需要在塊中添加這個嗎? ''dictionary = [aSkus objectAtIndex:idx];' – Jon 2012-02-17 18:51:35

0

請嘗試以下(與iOS兼容2+):

NSMutableArray *newArray = [NSMutableArray array]; 
for (NSDictionary *origDict in origArray) { // Replace origArray with your array's name 
    [newArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:[origDict [email protected]"name"], @"name", [origDict [email protected]"address"], @"address", nil]]; 
} 
NSArray *newImmutableArray = [newArray copy] // If you want to ensure your array is not mutable 
// ... 
[newImmutableArray release]; // To balance -copy above 
0

試試這個

for(i=0;i<[firstArray count];i++){ 

NSArray *objectArray=[NSArray arrayWithObjects:[[firstArray objectAtIndex:i]objectForKey:@"name"],[[firstArray objectAtIndex:i]objectForKey:@"address"]]; 

NSArray *keyArray=[NSArray arrayWithObjects:@"name",@"address"]; 
NSDictionary *myDictionary=[NSDictionary dictionaryWithObjects:objectArray forKeys:keyArray]; 

[secondArray addObject:myDictionary]; 
}