1

我的 NSMutableArray 包含 GroupUser 对象的列表:

@interface GroupUser : NSObject {

    NSString *groupUser_name;//user name
    NSString *groupUser_customMsg;
    NSString *groupUser_emailId;
    NSString *groupUser_groupName;
    NSString *groupUser_aliasName;
    int groupUser_imageId;
    int groupUser_state;//whether user is online( value 0) offline(value 1) or busy(value 2)
    int groupUser_type;             
}

现在我想对列表进行排序: 1. 基于 groupUser_state 2. 基于 groupUser_name

例如:: 1. Sam Offline(值 1) 2. Ravi Online(值 0) 3. Amit Online(值 0) 4. Ganga Online(值 0) 5. Durga 离线(值 1)

排序后的输出应该是:: 1. Amit Online 2. Ganga Online 3. Ravi Online 4. Durga Offline 5. Sam Offline

通过提供相同的代码来帮助我.. 提前谢谢

4

2 回答 2

2
NSSortDescriptor *desc=[NSSortDescriptor  sortDescriptorWithKey:@"groupUser_state" ascending:YES];
NSArray *yourArray;
[yourArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:desc]];
于 2012-05-16T05:10:42.190 回答
0

或者,您可以调用 NSMutableArray 的 -sortUsingSelector:,但是您的自定义对象应该提供一种进行比较的方法,如下所示:

- (NSComparisonResult) compareSomeVariable:(GroupUser*) otherUser
{
    // Assumes ivar _someVariable is numeric; use NSString methods to compare
    // strings, etc.

    if(this->_someVariable < otherObject->_someVariable){
        return NSOrderedAscending;
    }
    else if(this->_someVariable > otherObject->_someVariable){
        return NSOrderedDescending;
    }
    else{
        return NSOrderedSame;
    }
}

并像这样对它们进行排序:

[array sortUsingSelector:@selector(compareSomeVariable:)];

缺点是你必须在你的类中定义这个自定义方法。您可以有几种不同的方法来根据不同的标准对对象进行排序。

于 2012-05-16T05:20:44.297 回答