排序多个数组

时间:2012-09-18 08:38:57

标签: ios sorting nsarray

以下是我的情况:

我操纵了6个NSMutableArrays。其中一个包含NSDate个对象,其他包含NSNumber个。当我填充它们时,我为它们中的每一个使用addObject:,因此每个数组的索引0包含我在日期数组中的索引0处的日期所需的所有值。

我想确保数组都按照日期数组(按日期排序,按升序排序)进行排序,这意味着在排序过程中,如果将日期数组的第5行移动到第1行,则必须是也应用于所有其他数组。

以前使用CoreData,但我必须不再使用它(请不要问为什么,这是偏离主题的;))。在CoreData中,我可以使用NSSortDescriptor,但我不知道如何使用多个NSArray来...

与往常一样,提示/答案/解决方案总是受到赞赏:)

3 个答案:

答案 0 :(得分:4)

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

  1. 将六个数组封装到一个对象中 - 每个实例都有六个属性。
  2. 使用compare:对此对象实施[NSDate compare:]方法(此步骤可以跳过,但这样更干净。)
  3. 现在您只有一个数组 - 使用步骤2中的方法对其进行排序。

答案 1 :(得分:2)

我认为有更好的解决方案可以获得NSDrray NSDrray对象。

NSArray *allValues = [[NSArray alloc] init];
NSDictionary *dict = @{"Date" : [NSDate date], @"Key1" : @"Value1", @"Key2" : @"Value2"};

然后,您可以使用sortDescriptor对此数组进行排序,而不会出现任何问题。 然后您也可以根据需要使用Comparator或Sort Desriptor。

答案 2 :(得分:1)

将存储在数组中的所有项目包装到单个对象中。您之前的6个阵列中的每一个都是一个属性。

在该对象中,您可以实现

 - (NSComparisonResult)compare:(YourClass *)otherObject {
     return [self.date compare:otherObject.date];
}

您现在可以对数组进行排序,它们将按日期排序。