Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 对多个数组排序_Ios_Sorting_Nsarray - Fatal编程技术网

Ios 对多个数组排序

Ios 对多个数组排序,ios,sorting,nsarray,Ios,Sorting,Nsarray,以下是我的情况: 我操作6个NSMutableArray。其中一个有NSDates对象,另一个有NSNumber。当我填充它们时,我使用addObject:为它们中的每一个添加对象,因此每个数组的索引0包含我希望在日期数组的索引0处为我的日期添加的所有值 我希望确保所有数组都按照dates数组的顺序按日期升序排序,这意味着在排序过程中,如果dates数组的第5行移动到第1行,那么它也必须应用于所有其他数组 我以前使用过CoreData,但我不能再使用它了。请不要问为什么,这是离题的。在CoreD

以下是我的情况:

我操作6个NSMutableArray。其中一个有NSDates对象,另一个有NSNumber。当我填充它们时,我使用addObject:为它们中的每一个添加对象,因此每个数组的索引0包含我希望在日期数组的索引0处为我的日期添加的所有值

我希望确保所有数组都按照dates数组的顺序按日期升序排序,这意味着在排序过程中,如果dates数组的第5行移动到第1行,那么它也必须应用于所有其他数组

我以前使用过CoreData,但我不能再使用它了。请不要问为什么,这是离题的。在CoreData中,我可以使用NSSortDescriptor,但我不知道如何使用多个NSArray


一如往常,提示/答案/解决方案总是值得赞赏的:

这是一个常见问题。使用以下方法

将六个数组封装到一个对象中——每个实例都有六个属性。 在这个对象上实现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分钟前发布了类似的解决方案,所以我不得不接受他的回答: