如果阵列始终包含其他数组,而最里面的数组的第一个元素总是包含数字的字符串,你可以使用的NSMutableArray方法sortUsingComparator排序的数组:
[array sortUsingComparator: ^(NSArray* obj1, NSArray* obj2)
{
int value1 = [obj1[0] integerValue];
int value2 = [obj2[0] integerValue];
if (value1==value2)
return NSOrderedSame;
else if (value1 < value2)
return NSOrderedAscending;
else
return NSOrderedDescending;
}
];
在sortUsingComparator您提供了一组代码,sort方法用它来比较数组中的对象对。该块使用标准的typedef NSComparator,它将2个对象作为参数并返回一个NSComparisonResult类型的值。
如果数组中的所有对象都不是字符串数组,则上面的代码可能会崩溃。 (实际上,如果每个组件阵列的第一个元素是NSNumber,那么它会起作用,因为NSNumber也响应integerValue消息。)
如果您要在非常受控制的环境中使用此代码,您可以确保您正在排序的数据是格式良好的,它应该按照书面形式工作。如果数组中的对象有可能是不同的类型或空的,或者它们的第一个元素不会响应integerValue消息,那么您应该添加错误检查代码。
你可以展示你到目前为止已经尝试过什么,哪些不起作用? –
你是否总是在你的mutableArray中添加数组? – shinyuX
顺便说一句 - 第一个值不是数字,它是一个字符串。 – rmaddy