#objective-c #variables #int
#objective-c #переменные #значение int
Вопрос:
Пока у меня есть код
- (void)CreatenewBlock:(int)blockCountToSpawn
{
for (int i=0; i != blockCountToSpawn; i )
{
theBlockxCord = arc4random() % 4;
theBlockyCord = arc4random() % 4;
NSLog(@"New Block with Cords (%i, %i)",theBlockxCord, theBlockyCord);
}
}
Это выполняется до тех пор, пока не будет достигнуто значение anount из blockCountToSpawn
Это работает именно так, как я хочу, но я хочу каждый раз устанавливать для blockxcord новую переменную. Таким образом, конечный результат был бы чем-то вроде:
theBlockxCordOfBlock1=2
theBlockxCordOfBlock2=4
theBlockxCordOfBlock3=1
theBlockxCordOfBlock4=3
Вместо того, чтобы каждый раз перезаписывать строку blockxcord.
Для получения бонусных баллов, есть ли единственный способ вызвать их, возможно, в массиве, чтобы мне не приходилось продолжать это делать:
if (theBlockxCordOfBlock1 == 2 || theBlockxCordOfBlock3 == 2 ..etc)
{
do stuff..
}
Ответ №1:
Вы можете использовать массивы C или NSMutableArray. Вам придется преобразовать int
s в NSNumber
s, прежде чем вы сможете добавить его в массив.
- (void)CreatenewBlock:(int)blockCountToSpawn
{
NSMutableArray *blockXCoord = [NSMutableArray array]; // Retain it as needed.
NSMutableArray *blockYCoord = [NSMutableArray array];
for (int i=0; i != blockCountToSpawn; i )
{
[blockXCoord addObject:[NSNumber numberWithInt:(arc4random() % 4)];
[blockYCoord addObject:[NSNumber numberWithInt:(arc4random() % 4)];
}
...
}
если вы хотите выполнить поиск 2
, то сделайте это
if ( [blockXCoord indexOfObject:[NSNumber numberWithInt:2]] != NSNotFound ) {
... do stuff
}
или
if ( [blockXCoord containsObject:[NSNumber numberWithInt:2]] ) {
... do stuff
}
Редактировать
for ( int i = 0; i < [blockXCoord count]; i ) {
NSPoint point = NSMakePoint([[blockXCoord objectAtIndex:i] intValue],[[blockYCoord objectAtIndex:i] intValue]);
... do something with the point.
}
Комментарии:
1. Спасибо за бонус, но исходный вопрос все еще сокращается.
2. Я тебя не понял. Замените текущее назначение на это, и оно должно сработать, верно?
3. Возможно, я запутался в [blockXCoord AddObject:[NSNumber numberWithInt:(arc4random() % 4)]; Где находится массив, в который он добавляется?
4. indexOfObject: безусловно, будет работать, но я думаю, что containsObject: легче понять и поддерживать.
5. @Deepak Спасибо! Что, если я захочу сравнить все в массиве с одним значением int, таким как: if ([blockXCoord indexOfObject:[NSNumber numberWithInt:all]] != playerxcord)
Ответ №2:
Что касается вашего первого вопроса: поместите ваши результаты либо в обычный массив, как в любой программе C, либо в NSMutableArray. http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html
Что касается вашего второго вопроса: если вы использовали NSMutableArray для хранения объектов (скажем, NSNumber), вы можете вызвать containsObject:
, чтобы определить, находится ли объект в массиве. http://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSArray_Class/NSArray.html#//apple_ref/occ/instm/NSArray/containsObject:
Комментарии:
1. containsObject звучит великолепно! Спасибо 🙂