2012-01-03 5 views
1

Я создал массив из 16 CGpoints, представляющих 16 позиций на игровой плате. Вот как я настроил массив CGPoint cgpointarray[16]; Я хотел бы создать цикл for для циклического перехода по каждому элементу в массиве и проверить, находится ли касание в пределах x расстояния от позиции (у меня есть позиция CGPoint. . есть много experiance с Xcode или Objective C Я знаю, что питон эквивалент будетКак пройти через массив CGPoints

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

Как бы я сделать это Спасибо

ответ

5
for (int i = 0; i < 16; i++){ 
     CGPoint p = cgpointarray[i]; 
     //do something 
    } 

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

NSMutableArray *points = [NSMutableArray array]; 

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

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

     //do something 
} 

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

+0

Ответ meccan более полный. То, что я разместил (и его верхний сегмент кода), будет работать нормально, но использование NSArray - это то, как я мог бы пойти. –

+0

Почему? в чем разница? – Puregame

+0

первая версия C Struct (без ООП). Второй использует стандартные объекты Foundation для хранения данных. Вот почему @AndrewMadsen рекомендует второе решение. – CarlJ

1

Это следует сделать это:

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

    // Do stuff with point 
} 
0

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

NSArray* arrayOfStructyThings = [someAPI giveMeAnNSArrayOfStructs]; 
for (NSUInteger i = 0; i < arrayOfStructyThings.count; ++i) { 
    SomeOldStruct tr = arrayOfStructyThings[i]; 
    .... do your worst here ... 
} 
Смежные вопросы