1

我有两个 NSMutabeArrays,一个是数字,另一个是单词。

假设这两个数组如下所示:

1  hello
24 no
11 there
5  boo

现在我对第一个数组进行排序,因此数字是递减的(如下所示,我希望单词与数字一起移动,以便它们保持与它们关联的原始数字):

24 no
11 there
5  boo
1  hello

知道如何实现这一目标吗?谢谢。

4

3 回答 3

4

您应该将数字和单词组合成一个具有两者属性的对象。然后,您可以维护这些对象的有序数组,而不是尝试协调两个独立的数组。

实现这一点的一种方法是使用 a NSDictionary,但我通常建议使用一个简单的模型对象来保存这两个值:

@interface SomeObject : NSObject
@property (nonatomic, readwrite, strong) NSString *word;
@property (nonatomic, readwrite, assign) NSUInteger number;
@end

@implementation SomeObject
@synthesize word=_word;
@synthesize number=_number;
@end

还有其他方法可以构建此对象(例如,您可以使其不可变,这对多线程应用程序很有用),但这是最简单的。

于 2012-06-25T14:54:44.940 回答
1

这两个数组显然是非常紧密耦合的,因此您希望在程序设计中体现这种耦合,而不是仅仅将其埋没在排序例程的实现中。如何最好地做到这一点取决于您必须适应解决方案的上下文。单阵列解决方案可能是最好的,也可能不是。另一种可能的解决方案是创建一个包含两个数组的新类,并负责在排序、插入、删除等时保持它们的一致性。

于 2012-06-25T15:11:48.607 回答
0

虽然不是最佳答案,但肯定是我实现多列表的一种方式(可按任何列排序)。

我这样做是为了让代码本身在平台之间更易于传输。

这样做的方法是保存一个索引映射数组。它的工作方式是,你有 dataArray1 和 dataArray 2。如果你想按 dataArray1 排序,那么你在映射数组中保存新的映射索引(当你对 dataArray1 进行排序时)。排序完成后,映射数组保存的数据将是dataTable2中需要放在映射数组索引位置的索引

我看到很多关于数据耦合的答案。这在很大程度上取决于您真正打算如何使用数据。在我的设计中,数据仅在表格视图中显示(以及表格显示)时才需要耦合,但在我的图表视图中,这种方式的数据排序无关紧要,因此不需要耦合。我认为这里有很多很好的答案,问题是围绕这些数据设计了什么???

于 2012-06-25T15:15:48.523 回答