如何在Objective C中对数组进行排序?

时间:2011-07-08 07:45:05

标签: iphone

  

可能重复:
  How to sort array having numbers as string in iPhone?
  How Do I sort an NSMutable Array with NSNumbers in it?

我有一个随机数字序列的NSMutableArray。我必须按升序和降序对它们进行排序?是否有任何内置功能,如果没有如何做到这一点。数组是这样的:

arr = [“12”,“85”,“65”,“73”,“21”,“87”,“1”,“34”,“32”];

3 个答案:

答案 0 :(得分:4)

对包含对象的NSMutableArray(基于键)进行排序

首先,您需要创建一个NSSortDescriptor并告诉它对哪个键进行排序。

 NSSortDescriptor *lastNameSorter = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:YES];
[personList sortUsingDescriptors:[NSArray arrayWithObject:lastNameSorter]];

希望 this Full tutorial 可以帮助您。

答案 1 :(得分:3)

使用类NSMutableArray的sortUsingSelector实例方法。

使用此行(但如果是数字,则需要使用NSNumbers而不是字符串)

[myArray sortUsingSelector:@selector(compare:)];

按升序对数组进行排序。对于降序,在上一行之后添加此行。

myArray=[myArray reverseObjectEnumerator] allObjects];

答案 2 :(得分:1)

您案例的示例代码:

NSArray *sortedArray; 

sortedArray = [anArray sortedArrayUsingFunction:intSort context:NULL];

NSInteger intSort(id num1, id num2, void *context)
{
    int v1 = [num1 intValue];
    int v2 = [num2 intValue];
    if (v1 < v2)
        return NSOrderedAscending;
    else if (v1 > v2)
        return NSOrderedDescending;
    else
        return NSOrderedSame;
}

你可以开发一个逻辑来在intsort方法中对数组进行排序,并将其作为参数传递给上面的方法。

有许多预定义的方法,如:

  • sortUsingDescriptors:
  • sortUsingComparator:
  • sortWithOptions:usingComparator:
  • sortUsingFunction:上下文:
  • sortUsingSelector:

关注developer.apple.com以获取api

好运TNX