如何按对象的参数排序NSMutableArray

Tom*_*ulc 2 sorting objective-c nsmutablearray

我有NSMutableArray对象Link有参数Byte taskOne.我必须通过此参数对对象进行排序.

    for (Byte i = 0; i < [linksArray count]-1; i++) {
        Link *l = [linksArray objectAtIndex:i];
        Link *lNext = [linksArray objectAtIndex:i+1];
        if (l.taskOne >= lNext.taskOne) {
            NSLog(@"%d >= %d", l.taskOne, lNext.taskOne);
            [linksArray replaceObjectAtIndex:i withObject:lNext];
            [linksArray replaceObjectAtIndex:i+1 withObject:l];
        }
    }
Run Code Online (Sandbox Code Playgroud)

这给了我错误的结果,但我不知道出了什么问题.谢谢你的帮助.

Nic*_*rge 5

对数组进行排序的最简单方法是使用NSSortDescriptorKVC,如下所示:

NSArray *linksArray;    // Assume that this contains objects which respond to the -taskOne method

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"taskOne" ascending:YES];
NSArray *sortedLinks = [linksArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
Run Code Online (Sandbox Code Playgroud)

这将创建一个新数组.要对其进行排序NSMutableArray,请执行以下操作:

NSMutableArray *linksArray; // Assume that this contains objects which respond to the -taskOne method

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"taskOne" ascending:YES];
[linksArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
Run Code Online (Sandbox Code Playgroud)