在目標C相同的結果我試着這個爲你的問題,我現在得到了解決方案。它工作正常。
NSArray *array = @[@{@"name" : @"lunch", @"date" : @"01-01-2015" , @"hours" : @"1"},
@{@"name" : @"dinner", @"date" : @"01-01-2015" , @"hours" : @"1"},
@{@"name" : @"dinner", @"date" : @"01-01-2015" , @"hours" : @"1"},
@{@"name" : @"lunch", @"date" : @"01-01-2015" , @"hours" : @"1"},
@{@"name" : @"dinner", @"date" : @"01-01-2015" , @"hours" : @"1"},
];
NSMutableArray *resultLunchArray = [NSMutableArray new];
NSMutableArray *resultDinnerArray = [NSMutableArray new];
NSMutableArray *finalResultsArray = [NSMutableArray new];
NSArray *groupLunch = [array valueForKeyPath:@"@distinctUnionOfObjects.name"];
for (NSString *str in groupLunch)
{
NSArray *groupNames = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"name = %@", str]];
if([str isEqualToString:@"lunch"])
{
for (int i = 0; i < groupNames.count; i++)
{
NSString *nameLunch = [[groupNames objectAtIndex:i] objectForKey:@"name"];
NSString *dateLunch = [[groupNames objectAtIndex:i] objectForKey:@"date"];
NSString *strNameLunch = [NSString stringWithFormat:@"%@ : %@",nameLunch,dateLunch];
[resultLunchArray addObject:strNameLunch];
}
[finalResultsArray addObject:resultLunchArray];
}
else{
for (int i = 0; i < groupNames.count; i++)
{
NSString *nameDinner = [[groupNames objectAtIndex:i] objectForKey:@"name"];
NSString *dateDinner = [[groupNames objectAtIndex:i] objectForKey:@"date"];
NSString *strNameDinner = [NSString stringWithFormat:@"%@ : %@",nameDinner,dateDinner];
[resultDinnerArray addObject:strNameDinner];
}
[finalResultsArray addObject:resultDinnerArray];
}
}
NSLog(@"The final results are - %@",finalResultsArray);
輸出Reults是
The final results are - (
(
"lunch : 01-01-2015",
"lunch : 01-01-2015"
),
(
"dinner : 01-01-2015",
"dinner : 01-01-2015",
"dinner : 01-01-2015"
)
)
在Objective C中,你想做什麼? – user3182143
與該代碼相同@ user3182143 – iOSGeek
@iOSGeek我對於仍在學習它的swift代碼並不熟悉。你能否向我解釋一下你添加的代碼段會做什麼? – Arun