Как перебрать массив CGPoints - PullRequest
1 голос
/ 03 января 2012

Я создал массив из 16 CG-точек, представляющих 16 позиций на игровом поле.Вот как я настраиваю массив CGPoint cgpointarray[16];. Я хотел бы создать цикл for, чтобы циклически проходить по каждому элементу в массиве и проверять, находится ли касание на расстоянии x от позиции (у меня есть позиция в качестве CGPoint.Я не очень разбираюсь в xcode или объективе C. Я знаю, что эквивалент Python будет

 for (i in cgpointarray){
        //Stuff to do
    }

Как бы мне этого добиться? Спасибо

Ответы [ 3 ]

6 голосов
/ 03 января 2012
for (int i = 0; i < 16; i++){
        CGPoint p = cgpointarray[i];
        //do something
    }

Или, если вы хотите использовать NSArray Class:

NSMutableArray *points = [NSMutableArray array];

[points addObject:[ NSValue valueWithCGPoint:CGPointMake(1,2)]];

for(NSValue *v in points) {
       CGPoint p = v.CGPointValue;

        //do something
}

(не тестировалось в XCode)

1 голос
/ 03 января 2012

Это должно сделать это:

for (NSUInteger i=0; i < sizeof(cgpointarray)/sizeof(CGPoint); i++) {
    CGPoint point = cgpointarray[i];

    // Do stuff with point
}
0 голосов
/ 31 июля 2014

Я бы обычно использовал описанный выше подход NSValue, но иногда вы работаете с API, где вы не можете изменить вывод.Подход @Andrews - это круто, но я предпочитаю простоту .count:

NSArray* arrayOfStructyThings = [someAPI giveMeAnNSArrayOfStructs];
for (NSUInteger i = 0; i < arrayOfStructyThings.count; ++i) {
    SomeOldStruct tr = arrayOfStructyThings[i];
    .... do your worst here ...
}
...