希望有人可以提供帮助。
我正在向NSMutableArray添加多个对象,我需要根据第一个元素对顺序进行排序。第一个元素始终是一个数字。
但是我不确定该怎么做?
例如:
NSMutableArray *array = [[NSMutableArray alloc] init];
NSArray *object = [NSArray arrayWithObjects: @"1",@"Test",@"Test"];
[array addObject:object];
由于
答案 0 :(得分:1)
如果您的数组总是包含其他数组,并且最内层数组的第一个元素始终是包含数字的字符串,则可以使用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消息,那么你应该添加错误检查代码。
答案 1 :(得分:0)
如果按字母顺序对数组进行排序,则对象@"1"
将出现在任何单词之前。请注意,上面代码中的@"1"
是字符串,而不是数字。
关于如何对数组进行排序,请查看[NSArray sortedArrayUsingComparator:]
和类似的方法。