Objective-C:计算到数组中的每个“十”

时间:2014-08-06 00:56:27

标签: objective-c for-loop fast-enumeration

我想知道如何根据每个"第十个"做一些不同的事情。数组中的项。我不太了解,但我认为它会像这样......

for (NSDictionary *object in array) {

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

        //DO SOMETHING
    }

}

但这显然是伪代码,但不起作用。任何人都可以帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:4)

试试这个。

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];

如果数组如下所示,并且每隔10日添加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)];
}

答案 1 :(得分:4)

怎么样:

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

答案 2 :(得分:0)

-enumerateObjectsUsingBlock:为您提供索引和对象引用。

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

答案 3 :(得分:0)

Objective-C帮助:

花了我一段时间,我无法使上面的示例生效,但是这对我有用...如果您只需要向数组添加第10个对象,则可以帮助某人:< / p>

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]的输出

在我的项目中,使用j += 5的startTime3 = [0,5,10,15,20,25,30,35,40,45,50,55]适用于我的分钟计时器数组。

(当我仅使用'j'时,就像上面的示例一样,我只获取了2个对象?如果有人遇到此问题,这将为我解决了这个问题。)

相关问题