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 Offline(値 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 に答える