如何使用类对象对NSMutableArray进行排序?

时间:2012-02-23 08:14:48

标签: iphone ios xcode ios-simulator

我有一个班级Events

@interface MeEvents : NSObject {
    NSString* name;**strong text**
    NSString* location;

}

@property(nonatomic,retain)NSString* name;strong text
@property(nonatomic,retain)NSString* location;

在我的NSMutablArray中,我添加了事件对象

Events* meEvent;
[tempArray addObject:meEvent];

请告诉我如何按成员名称对此数组进行排序。

4 个答案:

答案 0 :(得分:4)

NSSortDescriptor *sortDes = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
        [tempArray_ sortUsingDescriptors:[NSArray arrayWithObject:sortDes]];
        [sortDes release];

答案 1 :(得分:2)

在@interface line

上方的实现文件的顶部声明它
NSComparisonResult sortByName(id firstItem, id secondItem, void *context);

以下是方法的实现

NSComparisonResult sortByName(id item1, id item2, void *context)
{
    NSString *strItem1Name = [item1 name];
    NSString *strItem2Name = [item2 name];

    return [strItem1Name compare:strItem2Name]; //Ascending for strItem1Name you can reverse comparison for having descending result
}

这就是你怎么称呼它

[tempArray sortUsingFunction:sortByName context:@"Names"];

答案 2 :(得分:2)

最简单的方法是使用sortUsingComparator:,如下所示:

[tempArray sortUsingComparator:^(id a, id b) {
    return [[a name] compare:[b name]];
}];

如果您要对这些字符串进行排序,因为您希望向用户显示已排序的列表,则应localizedCompare:代替:

[tempArray sortUsingComparator:^(id a, id b) {
    return [[a name] localizedCompare:[b name]];
}];

或者您可能想要使用localizedCaseInsensitiveCompare:

答案 3 :(得分:1)

您可以使用NSArray

对数组进行排序
- (NSArray *)sortedArrayUsingSelector:(SEL)comparator

方法

有关详细信息,请参阅this SO回答