Ipad UITableView排序部分

Ipad UITableView排序部分,ipad,sorting,Ipad,Sorting,是否可以按字母顺序对UITableView节进行排序 我有一个对象数组,在第0节中,我只有该节数组中的一项。它可以是数组中我交换的任何项。第1节将显示阵列中的其余对象 e、 g A、B、C、D 我希望C现在在第0节,其余的按字母顺序排列在第1节 我希望D现在在第0节,其余的按字母顺序排列在第1节 我试过移动物体,分类,然后移动,但没有运气。在我需要将其更改为带有标签的UIViewController和标签下方的UITableView以模拟此操作之前,任何建议都非常好。您可以使用sortUsing

是否可以按字母顺序对UITableView节进行排序

我有一个对象数组,在第0节中,我只有该节数组中的一项。它可以是数组中我交换的任何项。第1节将显示阵列中的其余对象

e、 g

A、B、C、D

我希望C现在在第0节,其余的按字母顺序排列在第1节

我希望D现在在第0节,其余的按字母顺序排列在第1节


我试过移动物体,分类,然后移动,但没有运气。在我需要将其更改为带有标签的UIViewController和标签下方的UITableView以模拟此操作之前,任何建议都非常好。

您可以使用sortUsingSelector按字母顺序对对象数组进行排序。数组确实需要为NSMutableArray类型,而不仅仅是NSArray,并添加一个返回模型类中的NSComparisonSort值。在本例中,MyObject是自定义对象的类。排序是基于字母属性完成的,该属性是NSString,但可能是其他内容

// Just before wherever your Data Source is returned in your MyObject Class
[myArray sortUsingSelector:@selector(compareTo:)];

// Method which does the Comparison, also in your MyObject
- (NSComparisonResult)compareTo:(MyObject *)otherObject {
    return [self.letter caseInsensitiveCompare:otherObject.letter];
}
现在要将一个对象放在索引0处,可以执行以下操作。我想你知道你要取出的对象的索引

MyObject *temp = [[myArray objectAtIndex:index] retain];
[myArray removeObject:temp];
[myArray insertObject:temp atIndex:0];
此准备工作将在调用表视图委托方法之前完成。可能在表视图Init或ViewWillLoad/ViewDidLoad中

更新:以下是如何使用SortDescriptor实现相同的字母排序:

// This is setting up the Sort Descriptor for comparing the two objects based on the property 'letter'
NSSortDescriptor *sorter = [[[NSSortDescriptor alloc] initWithKey:@"letter" ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sorter];

// This is the sorted array returned based on the property 'letter'
NSArray *sorted = [myArray sortedArrayUsingDescriptors:sortDescriptors];

我试过了,但是我不能得到正确的比较结果。我需要比较两个物体,而不是自我。我试着用一个NSSortDescriptor作为替代品,但也没有成功。我已经更新了上面的帖子来演示如何使用排序描述符。希望能有帮助。也许发布一些代码会让它更清晰谢谢我的排序描述符在工作,但我没有看到的是文件夹1-test,12-test2,13-test3,4-test4是按字母顺序排序的,这是正确的。removeObject和insertObject是关键,我不知道insert的行为会做什么,它是否会像看上去那样向下推数组。谢谢