我正在从像这样的字典数组中收集数组中的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
上面的那个
答案 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];
}];