我有一个班级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];
请告诉我如何按成员名称对此数组进行排序。
答案 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)