В настоящее время у меня есть смесь объектов разных валют:
NSArray *currencies = @[ @"USD",@"USD",@"USD",@"USD", @"EUR",@"EUR",@"EUR",@"EUR", @"PHP",@"PHP",@"PHP",@"PHP", @"AUD",@"AUD",@"AUD",@"AUD"];
и мой код разделяет эти объекты в их различные соответствующие массивы, в результате чего будет:
USD[] = [USD , USD , USD ,USD]
PHP[] = [PHP , PHP , PHP]
EUR[] = [EUR , EUR , EUR]
AUD[] = [AUD, AUD , AUD].
Проблема в том, что я хочу разделить только доллары США и PHP, а остальные валюты должны быть в одном массиве. как это:
USD[] = [USD , USD , USD ,USD]
PHP[] = [PHP , PHP , PHP]
OTHER[] = [EUR,EUR,EUR,EUR,AUD,AUD,AUD]
мой текущий код такой:
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSArray *currencies = @[ @"USD", @"EUR", @"PHP", @"AUD" ];
NSMutableArray<AccountBalance *> *allAccounts = [NSMutableArray new];
int numOdDummyAccounts = 100;
for (int i=0;i<numOdDummyAccounts;i++) {
int currencyIdx = rand() % [currencies count];
AccountBalance *dummyBalance = [AccountBalance new];
[dummyBalance setCurrency:currencies[currencyIdx]];
[allAccounts addObject:dummyBalance];
}
// print out all currencies
for (int i=0;i<numOdDummyAccounts;i++) {
NSLog(@"%@", [allAccounts[i] getCurrency]);
}
////////////////////////////////////////////////////////////////
// now do the sorting
NSMutableDictionary<NSString *, NSMutableArray *> *groupedResult = [NSMutableDictionary new];
[allAccounts enumerateObjectsUsingBlock:^(AccountBalance * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSMutableArray *currencyArray = [groupedResult objectForKey:[obj getCurrency]];
if (currencyArray) {
[currencyArray addObject:obj];
} else {
NSMutableArray *newCurrencyArray = [NSMutableArray new];
[newCurrencyArray addObject:obj];
[groupedResult setObject:newCurrencyArray forKey:[obj getCurrency]];
}
}];
// print out all grouped currencies
NSMutableArray<NSMutableArray *> *arrayOfArrays = [NSMutableArray new];
for (NSString *currency in groupedResult.allKeys) {
NSMutableArray *currentCurrency = [groupedResult objectForKey:currency];
[arrayOfArrays addObject:currentCurrency];
NSLog(@"Accounts with currency %@: ", currency);
// print out all accounts with this currency
for (int i=0;i<[currentCurrency count];i++) {
NSLog(@"%@", [currentCurrency[i] getCurrency]);
}
}
}
return 0;
}