Как я могу взять NSArray Biggest Object - PullRequest
0 голосов
/ 24 октября 2011

У меня есть 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 как я могу это сделать?

я буду использовать, если создаю условия для самого большого объекта, подобного этому;

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 ]

1 голос
/ 24 октября 2011

это решит вашу проблему:

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;
 }
1 голос
/ 24 октября 2011

Один из способов - просто отсортировать массив и взять первый и последний индекс.

Сортировка NSArray в порядке убывания

0 голосов
/ 26 октября 2011

, чтобы получить значения, вместо этого следующий код:

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]);
0 голосов
/ 24 октября 2011

Напишите этот метод для сортировки двух строк, как вы определили, обратите внимание на NSNumericSearch. См. Документацию здесь.

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

, затем сортируйте, используя:

NSArray *sorted = [unsorted sortedArrayUsingFunction:sortNums context:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...