Objective-C: считать до каждого "десятого" в массиве

Мне было интересно, как мне выполнить сортировку через что-то другое, основываясь на каждом "десятом" элементе в массиве. Я не знаю много, но я думаю, что вроде бы так...

for (NSDictionary *object in array) {

    if (0==(object % 10)) {

        //DO SOMETHING
    }

}

Но это явно псевдокод, который не работает. Кто-нибудь может мне помочь с этим?

3 ответа

Решение

Попробуй это.

for (NSInteger i = 0 ; i < array.count ; i++)
{
    if(i%10 == 0)
    {
        // Do Something
    }
}

или же

for (NSDictionary *object in array)
{
    NSInteger index = [array indexOfObject:object];
    if(index%10 == 0)
    {
        // Do Something
    }
}

добавленной

Предположим, что массив NSArray,

NSArray *array;
NSMutableArray *tempArray = [NSMutableArray array];
for (NSInteger i = 0 ; i < array.count ; i++)
{
    if(i%10 == 0)
    {
        [tempArray addObject:/*some object*/];
    }
    [tempArray addObject:[array objectAtIndex:i]];
}
array = [NSArray arrayWithArray:tempArray];

если массив был как ниже и добавить A на каждом десятом.

|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|....
// 9 is the first 10th
// 19 is the second 10th

будет

|0|1|2|3|4|5|6|7|8|a|9|10|11|12|13|14|15|16|17||18|a|19....

добавленной

Как прокомментировал rmaddy, чтобы вставить объект, не нужно перебирать все объекты.

for (NSInteger i = 0 ; i < array.count ; i+=10)

Вы можете использовать это. Однако вы можете просто вставить объекты по индексу.

NSMutableArray *array;  // this is the original array;
NSArray *objects;       // this is the objects to insert array;
for(NSInteger i = 0 ; i < objects.count ; i++)
{
    [array insertObject:objects[i] atIndex:9+(i*11)];
}

Как насчет:

for (int index = 0;index < array.count;index += 10)
{
     NSDictionary *object = array[index];
     // do whatever with object;
}

-enumerateObjectsUsingBlock: дает вам и индекс, и ссылку на объект.

[array enumerateObjectsUsingBlock:^(NSDictionary *object, NSUInteger i, BOOL *stop) {
    if (0 == (i % 10)) {
        //DO SOMETHING
    }
}];

Objective-C помощь:

Это заняло у меня некоторое время, я не смог заставить работать приведенные выше примеры, но это сработало для меня... может помочь кому-то, если вам нужно добавить только каждый десятый объект в массив:

startTime3 = [[NSMutableArray alloc]init];
     int j;
     int i;
     for ( j = 0, i = 0; i < 12; i++, j += 10) {
         [startTime3 addObject:[NSString stringWithFormat:@"%i", j]];
         NSLog(@"i = %i, j = %i", i, j);

     } 

Выход из startTime3 = [0,10,20,30,40,50,60,70,80,90,100,110]

В моем проекте startTime3 = [0,5,10,15,20,25,30,35,40,45,50,55] используя j += 5 работает для моего массива таймера минут.

(Когда я использовал только 'j', как в приведенных выше примерах, я получал только 2 объекта? Если кто-то сталкивался с этой проблемой, это решило ее для меня.)

Другие вопросы по тегам