我有一个array
个对象,我目前正按date
排序(每个对象上都有一个date
字段。)
我希望能够将此数组拆分为多个部分,其中每个部分包含具有相同日期的对象。是否已有支持的机制?
答案 0 :(得分:1)
除了我在评论中建议的方式外,似乎没有相应的机制:
我创建了一个nsmutabledict
,然后迭代我排序的对象列表。对于每个对象,我检查日期,看看我的dict
中是否存在与该日期相关的密钥。如果是,我从dict
检索该值并将此object
附加到该数组。如果没有,我会创建一个新的list
并将其插入dict
,其中包含与日期相关的密钥。
答案 1 :(得分:0)
- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate
会很有用。编写谓词以获取与数组中第一个项的日期匹配的所有元素的过滤数组。将该数组添加到一个新的可变数组中,该数组是保存所有具有匹配日期的已过滤数组的对象。
将该日期记录为已使用。迭代原始数组,直到找到不同的日期并重复filteredArrayUsingPredicate
操作。继续这样做,直到您覆盖了数组中的所有唯一日期。
我打算建议使用NSSet删除已经过滤的所有项目,以减少处理时间,但项目数量可能很重要,并且根据对象,NSSet可能会丢弃重复项。
优化可以是使用NSSet从原始数组中非破坏性地创建一组唯一日期,然后迭代该集合,执行filteredArrayUsingPredicate
操作。但这是否实际取决于您的数据。