Использование NSUInteger Input для insertObject:___ atIndex:___
Я пытаюсь создать простую игру в крестики-нолики с помощью NSMutableArray.
Создан класс с именем "Board" с методом "getPosition" (я предполагаю, что это лучший способ получить пользовательский ввод). Я спрашиваю позицию, затем приводю от int к NSUInteger)
#import "Board.h"
@implementation Board
-(void)getPosition;
{
int enteredPosition;
scanf("%i", &enteredPosition);
NSUInteger nsEnteredPosition = (NSUInteger ) enteredPosition;
NSLog(@"Position = %lu", (unsigned long)nsEnteredPosition);
}
#import <Foundation/Foundation.h>
#import "Board.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString *currentPlayer;
NSMutableArray *gameBoard=[[NSMutableArray alloc] initWithCapacity:9];
for(int i; i<=2; i++)
{
if(i %2)
{
currentPlayer=@"X";
}
else
{
currentPlayer=@"O";
}
NSLog(@"Player %@, select an open spot 1 - 9 on the board", currentPlayer);
Board *currentPosition = [[Board alloc] init];
[currentPosition getPosition];
[gameBoard insertObject:currentPlayer atIndex:currentPosition]; //this is where i have a problem
}
Насколько я понимаю, для atIndex требуется параметр NSUInteger, но я получаю сообщение об ошибке:
"Несовместимый указатель на целочисленное преобразование, посылающее" Board *_strong"на параметр типа" NSUInteger "(он же" неназначенный long ")
1 ответ
Вы используете currentPosition
как ваш индекс, который является Board
объект. возможно [currentPosition getPosition]
должен вернуть NSUInteger
, Если это так, попробуйте переписать последнюю часть кода следующим образом:
Board *theBoard = [[Board alloc] init];
NSUInteger currentPosition = [theBoard getPosition];
[gameBoard insertObject:currentPlayer atIndex:currentPosition]; //this is where i have a problem