{
NSMutableArray *dateMutablearray = [@[] mutableCopy];
NSArray *array1 = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",
@"2014-04-01",@"2014-04-02",@"2014-04-03",
@"2014-04-01",@"2014-04-02",@"2014-04-03",
@"2014-04-01",@"2014-04-02",@"2014-04-03",
@"2014-04-01",@"2014-04-02",@"2014-04-03",
@"2014-04-01",@"2014-04-02",@"2014-04-03",
@"2014-04-04",@"2014-04-06",@"2014-04-08",
@"2014-04-05",@"2014-04-07",@"2014-04-09",];
NSSet *set = [NSSet setWithArray:array1];
BOOL needSort = YES; // 是否需要排序
NSArray *sortSetArray;
if (needSort) {
NSArray *sortDesc = @[[[NSSortDescriptor alloc] initWithKey:nil ascending:YES]];
sortSetArray = [set sortedArrayUsingDescriptors:sortDesc];
} else {
sortSetArray = [set allObjects];
}
// NSLog(@"set%@\nsort set%@", set, sortSetArray);
for (NSString *str in sortSetArray) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES[c] %@", str];
NSArray *tmp = [array1 filteredArrayUsingPredicate:predicate];
[dateMutablearray addObject:tmp];
}
NSLog(@"dateMutablearray=======%@", dateMutablearray);
}
今天在逛論壇的時候,發現的一個關於處理數組的帖子。
樓主的訴求是“在返回的數組中,提取出相同的日期,存入一個數組中,再把提取出有相同元素的數組再存入一個數組中。”
上邊貼出的代碼是網友給出的解決方案。
主要的技術在於數組方法的運用。
NSArray提供瞭如下方法使用謂詞來過濾集合
- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate:使用指定的謂詞過濾NSArray集合,返回符合條件的元素組成的新集合
NSMutableArray提供瞭如下方法使用謂詞來過濾集合
- (void)filterUsingPredicate:(NSPredicate *)predicate:使用指定的謂詞過濾NSMutableArray,剔除集合中不符合條件的元素