Iphone 相对于另一个数组的排序对数组进行排序

Iphone 相对于另一个数组的排序对数组进行排序,iphone,uitableview,nsmutablearray,sorting,Iphone,Uitableview,Nsmutablearray,Sorting,这里有一种情况,我有两个数组,array1和array2,还有一个tableview。我已将array1加载到表视图中。在这里,我对array2进行排序,我已经这样做了,但是如何根据array2中的更改对array1进行排序,并在tableview中重新加载array1呢。也就是说,我需要在排序数组2时自动排序数组1。 有什么想法吗?请分享你的想法。 谢谢:)需要更多信息(源代码或psudo)来确定如何/何时/何地对array2进行排序,以回答如何对array1进行排序;但一旦对数组1进行排序,

这里有一种情况,我有两个数组,array1和array2,还有一个tableview。我已将array1加载到表视图中。在这里,我对array2进行排序,我已经这样做了,但是如何根据array2中的更改对array1进行排序,并在tableview中重新加载array1呢。也就是说,我需要在排序数组2时自动排序数组1。 有什么想法吗?请分享你的想法。 谢谢:)

需要更多信息(源代码或psudo)来确定如何/何时/何地对array2进行排序,以回答如何对array1进行排序;但一旦对数组1进行排序,您可以使用以下命令将值重新加载到表中:

[myTable reloadData];

它将重新加载每一行和单元格,按排序顺序读取数组1的值。

逻辑上的建议是,如果对象被排序在一起,那么它们以某种方式是相关的,两个数据段应该符合一个新对象(字典、NSObject等等)

我的意思是,如果array1是
[1,5,4,3,2]
,而array2是
[“你好”,“世界”,“大”,“小”,“我的”]
,那么混合数组将是:

[(1,“你好”),(5,“世界”),(4,“大”),(3,“小”),(2,“我的”)]

排序是很简单的,如果数据是相关的(因为您没有指定,所以无法判断),那么排序是有意义的

Objective-C示例 包含名称/编号的自定义对象(CustomObject.h)(以数字为例):

CustomObject.m:

#import "CustomObject.h"

@implementation CustomObject

@synthesize name, number;

+ (id)customObjectWithName:(NSString*)name andNumber:(NSInteger)number
{
    CustomObject *customObject = [[CustomObject alloc] init];

    customObject.name = name;
    customObject.number = number;

    return customObject;
}

- (NSString *)description
{
    return [NSString stringWithFormat:@"(Number:%d, Name:%@)", self.number, self.name];
}

- (void)dealloc
{
    [name release];
    [super dealloc];
}

@end
将这些对象与排序一起使用:

NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:
                            [CustomObject customObjectWithName:@"Hello" andNumber:1], 
                            [CustomObject customObjectWithName:@"gentlemen?" andNumber:5], 
                            [CustomObject customObjectWithName:@"you" andNumber:4],
                            [CustomObject customObjectWithName:@"are" andNumber:3], 
                            [CustomObject customObjectWithName:@"how" andNumber:2],
                                nil];

[array sortUsingComparator:^NSComparisonResult(id obj1, id obj2)
{
    return [(CustomObject*)obj1 number] - [(CustomObject*)obj2 number];
}];

NSLog(@"Results: %@", array);
输出如下所示:

2011-09-23 03:27:14.388 Test[5942:b303] Results: (
"(Number:1, Name:Hello)",
"(Number:2, Name:how)",
"(Number:3, Name:are)",
"(Number:4, Name:you)",
"(Number:5, Name:gentlemen?)"

那么如何相互依赖排序呢?这就是这里的问题,两个数组没有相互连接。array2中的内容是日期,因此我可以将其与NSDate进行排序。那么,有没有办法根据array2的变化来排列array1中的行呢?我不确定,但是如果我们考虑两个数组的行数?有什么想法吗?我有一个方法,-(void)replaceObjectSatiIndexes:(NSIndexSet*)index with objects:(NSArray*)objects。它有用吗??如果是,您能提供一些示例吗?默认情况下,当应用程序启动时,应在表中加载array1。当我点击sort按钮时,需要对array2进行排序,当排序完成后,根据array2中的更改对array1进行排序,然后重新加载表。逻辑不错,我认为这应该可以实现。你的意思是将两个数组都加载到一个带有键值的字典中并进行排序?你的第二个意见很好,如果可能的话,你会提供任何样本吗?我仍在检查第二个选项是否可行。第一个选项意味着这两个数据属于同一个对象,所以您应该考虑将每个单独的数据分组在一起,在这些数组中存储什么?在一个ARARY1中,一些字符串值和ARARY2日期。我认为如果能够实施第二种选择,那会更好。期待着您的光临,谢谢。我没有找到一个简单的方法来实现第二种方法,数组的底层非常复杂。我将发布第一种方法的示例。
2011-09-23 03:27:14.388 Test[5942:b303] Results: (
"(Number:1, Name:Hello)",
"(Number:2, Name:how)",
"(Number:3, Name:are)",
"(Number:4, Name:you)",
"(Number:5, Name:gentlemen?)"