Ios 对多个数组排序
以下是我的情况: 我操作6个NSMutableArray。其中一个有NSDates对象,另一个有NSNumber。当我填充它们时,我使用addObject:为它们中的每一个添加对象,因此每个数组的索引0包含我希望在日期数组的索引0处为我的日期添加的所有值 我希望确保所有数组都按照dates数组的顺序按日期升序排序,这意味着在排序过程中,如果dates数组的第5行移动到第1行,那么它也必须应用于所有其他数组 我以前使用过CoreData,但我不能再使用它了。请不要问为什么,这是离题的。在CoreData中,我可以使用NSSortDescriptor,但我不知道如何使用多个NSArrayIos 对多个数组排序,ios,sorting,nsarray,Ios,Sorting,Nsarray,以下是我的情况: 我操作6个NSMutableArray。其中一个有NSDates对象,另一个有NSNumber。当我填充它们时,我使用addObject:为它们中的每一个添加对象,因此每个数组的索引0包含我希望在日期数组的索引0处为我的日期添加的所有值 我希望确保所有数组都按照dates数组的顺序按日期升序排序,这意味着在排序过程中,如果dates数组的第5行移动到第1行,那么它也必须应用于所有其他数组 我以前使用过CoreData,但我不能再使用它了。请不要问为什么,这是离题的。在CoreD
一如往常,提示/答案/解决方案总是值得赞赏的:这是一个常见问题。使用以下方法 将六个数组封装到一个对象中——每个实例都有六个属性。 在这个对象上实现compare:method,使用[NSDate compare:]可以跳过这个步骤,但是这样更干净。 现在您只有一个数组-使用步骤2中的方法对其进行排序。
我认为最好的解决方案是使用NSDictionary对象数组
NSArray *allValues = [[NSArray alloc] init];
NSDictionary *dict = @{"Date" : [NSDate date], @"Key1" : @"Value1", @"Key2" : @"Value2"};
然后可以使用sortDescriptor对该数组进行排序,而不会出现任何问题。
然后,您还可以根据需要使用Comparator或Sort DeDescriptor。将存储在数组中的所有项目包装到单个对象中。前6个数组中的每一个都将是属性 在该对象内部,您可以实现
- (NSComparisonResult)compare:(YourClass *)otherObject {
return [self.date compare:otherObject.date];
}
您现在可以对数组进行排序,它们将按日期进行排序。您不能将包括日期在内的所有6个数据项打包到一个对象中,而不是将其保存在6个不同的数组中吗?然后您将拥有一个数组。只需按日期属性对数组进行排序。是的,谢谢,这正是Sulthan和Ben的建议。真不敢相信我居然没想到:谢谢。正如我在问题中所评论的,我不敢相信我没有想到这一点:使用字典其实不是一个坏主意。我已经多次使用数组,这让我看不到其他容器。。谢谢!谢谢,我可能会选择这样的。很抱歉,@Sulthan在2分钟前发布了类似的解决方案,所以我不得不接受他的回答: