2013-05-15 4 views
0

У меня есть массив, содержащий двадцать элементов. Я хочу выполнить поиск по массиву, сравнив один элемент со следующим в массиве и затем напечатать более крупный элемент. Я уже отсортировал массив. Я просто хочу сравнить два элемента, проверить, что остаток находится между этими двумя значениями, и если это больше, чем, скажем, четыре, напечатайте более крупный элемент.Сравните два элемента в одном NSArray

+1

Между каждой парой значений или значений в двух конкретных индексов, или что? Являются ли ваши значения 'NSNumber'? –

+1

Итерате. Существует несколько способов сделать это, но простой старый цикл 'for' должен делать все правильно. –

+0

Некоторые хорошие практики для сравнения [здесь] (http://stackoverflow.com/questions/805547/how-to-sort-an-nsmutablearray-with-custom-objects-in-it?rq=1) –

ответ

0
NSArray* arr = [NSArray arrayWithObjects: 
    [NSNumber numberWithInt:1], 
    [NSNumber numberWithInt:6], 
    [NSNumber numberWithInt:7], 
    [NSNumber numberWithInt:11], 
    nil 
]; 

int len = [arr count]; 

for (int i=0; i < len-1; ++i) { 

    int num1 = [[arr objectAtIndex:i] intValue]; 
    int num2 = [[arr objectAtIndex:i+1] intValue]; 

    if (num2-num1 > 4) { 
     NSLog(@"%d", num2); 
    } 
} 

--output:-- 
    6 
+1

num2 будет num1 в следующей итерации. Просто установите num1 один раз перед входом в цикл for, который должен работать от 1 -

+0

@ AminNegm-Awad, Nice! – 7stud

0
NSEnumerator *itemEnumerator = [theArray objectEnumerator]; 
YourClass *lastObject = [itemEnumerator nextObject]; 
YourClass *compareObject; 
while((compareObject = [itemEnumerator nextObject]) != nil) 
{ 
    if(/* place your condition here */) 
    { 
    NSLog(…); 
    } 
    lastObject = compareObject; 
} 

Typped в Safari

Смежные вопросы