如何使用类对象对NSMutableArray进行排序?
问题描述:
我有一个类Events
如何使用类对象对NSMutableArray进行排序?
@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];
请告诉我如何将这个数组由成员名称排序。
答
最简单的方法是使用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:
。
答
NSSortDescriptor *sortDes = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
[tempArray_ sortUsingDescriptors:[NSArray arrayWithObject:sortDes]];
[sortDes release];
答
声明这个在实现文件的顶部上方@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"];
这给SIGABRT error.Sir我的数组返回类对象,像然后我收到Events中的对象* meEvent = [temparray objectAtIndex:i]; NSLog(@“Name%@”,meEvent.eventname); –
2012-02-23 08:33:06
@SawanCool:你必须在[“initWithKey:”“]中定义键值,在上面的代码中,我只是给出了一个”名称“的例子。请用你的键初始化sortDescriptor。 – Sree 2012-02-23 08:39:30