Присвоить значение int новому значению int

#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 звучит великолепно! Спасибо 🙂