我有一個NSArray
與幾個NSDictionaries
。我想創建一個新的NSArray
,其編號爲NSDictionaries
,但我只需要字典中的某些鍵,而不是全部。如何修改字典數組?
示例:
數組有2個字典。每本字典都有關鍵字name, age, address, email, phone
。
我想新的數組,也有2個字典,但只有name and address
鍵。
我有一個NSArray
與幾個NSDictionaries
。我想創建一個新的NSArray
,其編號爲NSDictionaries
,但我只需要字典中的某些鍵,而不是全部。如何修改字典數組?
示例:
數組有2個字典。每本字典都有關鍵字name, age, address, email, phone
。
我想新的數組,也有2個字典,但只有name and address
鍵。
我會做這樣的事情:
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];
}
];
請嘗試以下(與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
試試這個
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];
}
錯誤說缺少方法sentenial調度。 – Jon 2012-02-17 18:41:39
當我第一次發佈我的答案時,我在'dictionaryWithObjectsAndKeys:'的參數末尾丟失了'nil',但是我在30秒後放入了它。這應該是問題,假設您在修復代碼之前獲得了代碼。 – yuji 2012-02-17 18:43:36
其實我需要在塊中添加這個嗎? ''dictionary = [aSkus objectAtIndex:idx];' – Jon 2012-02-17 18:51:35