-1

我无法对我的一个 NSMutableArrays 进行排序。

数组设置如下

classesArray = [[NSMutableArray alloc] initWithObjects:nil];

NSMutableArray *tmpClassMembers = [[[NSMutableArray alloc] initWithObjects:nil] autorelease];
//tmpClassMembers gets populated

//hold an array with the class ID, name and class members.
//classID and classname are just strings essentially
NSMutableArray *tmpClass = [[NSMutableArray alloc] initWithObjects:msClass.ClassId,msClass.ClassName,tmpClassMembers,nil];

//add the new class to the main class array
[classesArray addObject:tmpClass];

一个示例顺序是(这些存储在数组中的元素 [1] 中(类名)

classesArray[0][1] = "3. Science 5B"
classesArray[1][1] = "4. Geography 6S"
classesArray[2][1] = "2. Biology 6T"
classesArray[3][1] = "1. English 1A"

我尝试过使用块排序,但它似乎没有做任何事情。我期望它根据数组中的第二个元素([1])进行排序。这应该是类名。

NSArray *sortedArray = [classesArray sortedArrayUsingComparator:^(id a, id b) {
        NSString *numA = [a objectAtIndex:1]; //eg: "1. English 1A"
        NSString *numB = [b objectAtIndex:1]; //eg: "3. Science 5B
        //NSLog(@"a=%@, b=%@", numA, numB);
        return [numB compare:numA];
    }];

我期望 classesArray 的顺序如下

classesArray[0][1] = "1. English 1A"
classesArray[1][1] = "2. Biology 6T"
classesArray[2][1] = "3. Science 5B"
classesArray[3][1] = "4. Geography 6S"

所以基本上它应该按字符串排序 - 它肯定会看到每个字符串都以一个数字开头,然后按那个排序?

我无法将数字作为要排序的 ID,因为 id 实际上类似于 DF345345-ERERT56 并且没有任何相关性。

我哪里错了?!

4

1 回答 1

0

我不会使用 tmpClasses 数组。如果您使用变量的属性创建一个名为 MyClass 的类:

@interface MyClass : NSObject
@property (nonatomic,retain) NSString* classID;
@property (nonatomic,retain) NSString* className; 
@property (nonatomic,retain) NSMutableArray* classMembers;

然后您可以使用此方法对 MyClass 对象数组进行排序:

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"classID"
                                             ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
arrayOfMyClassObjects = [arrayOfMyClassObjects sortedArrayUsingDescriptors:sortDescriptors];
于 2013-05-15T22:55:50.297 回答