Iphone 二维数组排序

Iphone 二维数组排序,iphone,objective-c,arrays,ios,Iphone,Objective C,Arrays,Ios,我有以下情况。我从xml提要和FacebookGraphAPI(在本例中是posts)导入数据。我想将此数据合并到一个数组中,并根据包含的日期数据对其进行排序 我现在有以下资料: [containerArray addObject: [NSMutableArray arrayWithObjects: created_time, message, picture, fbSource, nil ] ]; 这将创建一个二维数组,但我想在创建时对所有条目进行排序

我有以下情况。我从xml提要和FacebookGraphAPI(在本例中是posts)导入数据。我想将此数据合并到一个数组中,并根据包含的日期数据对其进行排序

我现在有以下资料:

[containerArray addObject: [NSMutableArray arrayWithObjects: created_time, message, picture, fbSource, nil ]
                    ];
这将创建一个二维数组,但我想在创建时对所有条目进行排序


我怎样才能最好地解决这个问题?提前通知

创建一个包含必要实例变量的数据类,而不是可变数组。然后可以使用NSArray类的各种排序方法,例如

排序可以如下所示:

NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"created_time" 
                                                                ascending:YES] autorelease];    

NSArray *sortedArray = [containerArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

[sortDescriptor release];
编辑

引用福勒先生书中的话

用对象替换数组

您有一个数组,其中某些元素表示不同的内容

将数组替换为每个元素都有字段的对象

动机

数组是组织数据的常用结构。但是,它们应仅用于包含顺序较低的类似对象的集合

这就是我们在这里要做的。让我们创建一个简单的Posts类。您可以轻松地添加自定义初始值设定项,该初始值设定项接受四个值作为参数,甚至可以添加一个方便的类方法,以便稍后返回自动释放的对象。这只是一个基本框架:

邮局 博士后 编辑2

将Post对象添加到数组中:

Post *newPost = [[Post alloc] init];
newPost.reated_time = [Date date];
newPost.message = @"a message";
newPost.picture = [UIImage imageNamed:@"mypic.jpg"];
// newPost.fbSource = ???
[containerArray addObject:newPost];

[newPost release];

创建一个包含必要实例变量的数据类,而不是可变数组。然后可以使用NSArray类的各种排序方法,例如

排序可以如下所示:

NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"created_time" 
                                                                ascending:YES] autorelease];    

NSArray *sortedArray = [containerArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

[sortDescriptor release];
编辑

引用福勒先生书中的话

用对象替换数组

您有一个数组,其中某些元素表示不同的内容

将数组替换为每个元素都有字段的对象

动机

数组是组织数据的常用结构。但是,它们应仅用于包含顺序较低的类似对象的集合

这就是我们在这里要做的。让我们创建一个简单的Posts类。您可以轻松地添加自定义初始值设定项,该初始值设定项接受四个值作为参数,甚至可以添加一个方便的类方法,以便稍后返回自动释放的对象。这只是一个基本框架:

邮局 博士后 编辑2

将Post对象添加到数组中:

Post *newPost = [[Post alloc] init];
newPost.reated_time = [Date date];
newPost.message = @"a message";
newPost.picture = [UIImage imageNamed:@"mypic.jpg"];
// newPost.fbSource = ???
[containerArray addObject:newPost];

[newPost release];

所以我不应该使用可变数组来存储数据。相反,我需要创建一个数据类,但这个数据类到底是什么?这是NSData吗?我对objective-c没有那么丰富的经验。Thnx!哇,尼克,谢谢你的回答!虽然我不知道如何将其集成到我的代码中。我接受了你的回答,因为它确实给了我最初的问题一个答案,但我很抱歉我可能会回敬你!ThnxHello Nick,目前我正忙于将您的解决方案集成到我的代码中。我在NewsTable类中创建了带有实例和便利方法的Post类。到目前为止还不错,但如何设置所有实例(如创建时间、消息等)?在我最初的帖子中,你可以看到我目前设置它们的方式。又来了@Jos在Edit2中添加了一个简单的示例。使用一个方便的类方法,您可以创建一个自动释放的对象,并将其直接添加到数组中。相反,我需要创建一个数据类,但这个数据类到底是什么?这是NSData吗?我对objective-c没有那么丰富的经验。Thnx!哇,尼克,谢谢你的回答!虽然我不知道如何将其集成到我的代码中。我接受了你的回答,因为它确实给了我最初的问题一个答案,但我很抱歉我可能会回敬你!ThnxHello Nick,目前我正忙于将您的解决方案集成到我的代码中。我在NewsTable类中创建了带有实例和便利方法的Post类。到目前为止还不错,但如何设置所有实例(如创建时间、消息等)?在我最初的帖子中,你可以看到我目前设置它们的方式。又来了@Jos在Edit2中添加了一个简单的示例。通过一个方便的类方法,您可以创建一个自动释放的对象,并将其直接添加到数组中。