我怎样才能使用NSArray Biggest Object

时间:2011-10-24 14:10:51

标签: objective-c xcode nsarray

我有一个NSArray,数组是这样的数字;

NSArray *ratio = [NSArray arrayWithObjects:@"99",@"88",@"77", @"66", @"55", @"44",@"33", @"22",@"11",@"0",@"-11",@"-22",@"-33",@"-44",@"-55",@"-66",@"-77",@"-88",@"-99",@"-100",nil];

我想拍摄最大的物体99和最小的物体-100 hiw我可以这样做吗?

我将使用if条件这样的最大对象;

if ([[ratio objectAtIndex:i] intValue] == 100 ) {

            rd = 0;
            gr = 0.5;
            bl =0;
}

//我想这样做

if ([[ratio objectAtIndex:i] intValue] == biggestobject or smallestobject ) {
      ///.....
}

帮助请给我的朋友:( - 现在解决问题但是下面还有另一个问题。

第二个问题:(

NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: NO];
NSLog(@"%@",[ratio sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]]);

我对数组进行了排序,但无法从数组中选择最大和最小的对象。我怎么能这样做?

NSLog屏幕就像这样; 99,99,99,91,91,88,88,88,88,77,77,66,66,66,

我如何使用objectforkey:0在排序数组

4 个答案:

答案 0 :(得分:1)

一种方法是对数组进行排序并获取第一个和最后一个索引。

Sort an NSArray in Descending Order

答案 1 :(得分:1)

这将解决您的问题:

NSInteger maxValue = 0, minValue = 0;
BOOL firstIteration = YES;

for(id item in ratio) {
    NSInteger intValue = [item integerValue];
    if( firstIteration ) {
        maxValue = intValue;
        minValue = intValue;
        firstIteration = NO;
        continue;
    }

    if( intValue < minValue ) minValue = intValue;

    if( intValue > maxValue ) maxValue = intValue;
 }

答案 2 :(得分:0)

编写此方法以按照您定义的方式对两个字符串进行排序,请注意NSNumericSearchSee Documentation here.

NSComparisonResult sortNums(NSString *s1, NSString *s2, void *context) {    
        return [s2 compare:s1 options:NSNumericSearch];
    }

然后使用:

排序
NSArray *sorted = [unsorted sortedArrayUsingFunction:sortNums context:nil];

答案 3 :(得分:0)

获取值,而不是以下代码:

NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: NO];
NSLog(@"%@",[ratio sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]]);

你需要使用:

NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: NO]; 
NSArray *sortedArray = [ratio sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];

NSLog(@"max item: %@, min item: %@", [soretedArray objectAtIndex:0], [sortedArray lastObject]);