0

这是我的情况:

我操作了 6 个 NSMutableArrays。其中一个有NSDates 个对象,其他的有NSNumbers 个。当我填充它们时,我addObject:对它们中的每一个都使用它们,因此每个数组的索引 0 包含我想要的日期数组中索引 0 处的所有日期值。

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

以前使用过CoreData,但我不能再使用它了(请不要问为什么,这是题外话;))。在 CoreData 中,我可以使用NSSortDescriptor,但我不知道如何使用多个NSArrays ...

一如既往,提示/答案/解决方案总是受到赞赏:)

4

3 回答 3

4

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

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

我认为拥有 NSDictionary 对象的 NSArray 是更好的解决方案。

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

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

于 2012-09-18T08:43:59.837 回答
1

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

在该对象内,您可以实现

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

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

于 2012-09-18T08:45:15.400 回答