从字典数组复制到字典数组

时间:2014-11-18 10:38:48

标签: iphone ios8 nsarray nsdictionary

我正在从像这样的字典数组中收集数组中的ID

NSArray *places=   @[ 
    {place_id = @"3dsfdDfGDH";      
    place_url = @"/Peru/Lambayeque/Chiclayo";      
    place_name = @"Peru";}
     ,
    {place_id = @"HUHiKcZVU7ItMyQ";       
    place_url = @"/Peru/La+Libertad/Huanchaco";      
    place_name = @"Peru";}
    ,
    {place_id = @"7JL1K5FVUbg0vg";        
    place_url = @"/United+Kingdom/England/Buckley+Hill";      
    place_name = @"United Kingdom";}
                   ];

NSArray *placeIds= [places valueForKeyPath:place_id]; 

它工作正常,但我想要的是另一个带有place_id的数组以及place_url但不是Name。 喜欢的东西

我希望NSArray * PlaceIdAndURL有下面的词典

                   @[
         {place_id = @"3dsfdDfGDH";     
        place_url = @"/Peru/Lambayeque/Chiclayo";}
         ,
        {place_id = @"HUHiKcZVU7ItMyQ";       
        place_url = @"/Peru/La+Libertad/Huanchaco";}
        ,
        {place_id = @"7JL1K5FVUbg0vg";        
        place_url = @"/United+Kingdom/England/Buckley+Hill";}
                       ];

如何在没有循环整个数组的情况下获得,就像我第一次使用ValueForKeyPath上面的那个

1 个答案:

答案 0 :(得分:1)

我认为在一个不会迭代的班轮中是不可能的......但是这里是完成这项工作的代码。实际上,您可以将此逻辑转换为方法并将其作为类别添加到NSArray和NSMutableArray ...

places_dup将包含您要查找的词典。

NSArray *places=   @[
                     @{@"place_id" : @"NFxmX.VVU7LtQwQ",
                       @"place_url" : @"/Peru/Lambayeque/Chiclayo",
                       @"place_name" : @"dadfasdf"}
                     ,
                     @{@"place_id" : @"HUHiKcZVU7ItMyQ",
                       @"place_url" : @"/Peru/La+Libertad/Huanchaco",
                       @"place_name" : @"dadfasdf"}
                     ,
                     @{@"place_id" : @"7JL1K5FVUbg0vg",
                       @"place_url" : @"/United+Kingdom/England/Buckley+Hill",
                       @"place_name" : @"dadfasdf"}
                     ];
NSMutableArray *places_dup = [@[] mutableCopy];
[places enumerateObjectsUsingBlock:^(id item, NSUInteger idx, BOOL *stop) {
    NSDictionary *dictionary = (NSDictionary *) item;
    NSMutableDictionary *filteredDictionary = [NSMutableDictionary dictionaryWithDictionary:dictionary];
    [filteredDictionary removeObjectForKey:@"place_name"];
    [places_dup addObject:filteredDictionary];
}];