{
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,剔除集合中不符合条件的元素