[英]How do I filter array of dictionaries by dictionary key
這是我的JSON,這是針對總共250個國家/地區的,我僅在下面列出了3個國家/地區。 在這里,我需要做的是,我已將各個國家/地區解析為基於大陸的七個不同陣列。
{
"geonames" : [
{
"languages" : "ca",
"east" : 1.786542777831983,
"continent" : "EU",
"geonameId" : 3041565,
"population" : "84000",
"areaInSqKm" : "468.0",
"countryName" : "Andorra",
"south" : 42.42849259876837,
"countryCode" : "AD",
"capital" : "Andorra la Vella",
"isoAlpha3" : "AND",
"fipsCode" : "AN",
"isoNumeric" : "020",
"west" : 1.407186714111276,
"continentName" : "Europe",
"north" : 42.65604389629997,
"currencyCode" : "EUR"
},
{
"languages" : "ar-AE,fa,en,hi,ur",
"east" : 56.38166046142578,
"continent" : "AS",
"geonameId" : 290557,
"population" : "4975593",
"areaInSqKm" : "82880.0",
"countryName" : "United Arab Emirates",
"south" : 22.63332939147949,
"countryCode" : "AE",
"capital" : "Abu Dhabi",
"isoAlpha3" : "ARE",
"fipsCode" : "AE",
"isoNumeric" : "784",
"west" : 51.58332824707031,
"continentName" : "Asia",
"north" : 26.08415985107422,
"currencyCode" : "AED"
},
{
"languages" : "fa-AF,ps,uz-AF,tk",
"east" : 74.879448,
"continent" : "AS",
"geonameId" : 1149361,
"population" : "29121286",
"areaInSqKm" : "647500.0",
"countryName" : "Afghanistan",
"south" : 29.377472,
"countryCode" : "AF",
"capital" : "Kabul",
"isoAlpha3" : "AFG",
"fipsCode" : "AF",
"isoNumeric" : "004",
"west" : 60.478443,
"continentName" : "Asia",
"north" : 38.483418,
"currencyCode" : "AFN"
}
]
}
這樣可以過濾geonames
數組。 方法filterArrayByADictionary
獲取一個數組和搜索條件,並返回過濾后的字典數組。
-(NSArray *)filterArrayByADictionary:(NSArray *)aArray andKey:(NSString *)aPredicte
{
NSPredicate *filter = [NSPredicate predicateWithFormat:aPredicte];
return [aArray filteredArrayUsingPredicate:filter];
}
您可以像這樣調用此方法。
NSArray *AsiaCounties = [self filterArrayByADictionary: geonames andKey:@"continent = 'AS'"];
NSArray *EuropeCounties = [self filterArrayByADictionary: geonames andKey:@"continent = 'EU'"];
// rest of the continents...
假設您已在NSDictionary
獲得以下輸出:
NSDictionary *mainDic;
NSMutableArray *arr = [NSMutableArray new];
NSMutableArray *arrcontinent1 = [NSMutableArray new];
NSMutableArray *arrcontinent2 = [NSMutableArray new];
arr = [mainDic valueForKey:@"geonames"];
for(int i=0; i<[arr count];i++){
NSDictionary *dic = [arr objectAtIndex:i];
if([[dic valueForKey:@"continent"] isEqualToString:@"EU"]){
[arrcontinent1 addObject:dic];
}
else if([[dic valueForKey:@"continent"] isEqualToString:@"AS"]){
[arrcontinent2 addObject:dic];
}
// and so on......
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.