Перестановка NSMutable Array: вызов метода

Я новичок в Objective-C и учусь методом проб и ошибок! Пожалуйста, прости меня, если этот вопрос несколько наивен.

Я создал массив изображений и должен перетасовать их. Я использовал совет, данный здесь:

Какой лучший способ перемешать массив NSMutableArray?

И теперь мне нужно реализовать метод 'shuffle'. У меня есть отдельная категория для моего массива и его реализации:

@interface theKid : NSObject {
    NSMutableArray* _cards;
}

@property(strong, nonatomic, readonly) NSMutableArray *cards;

- (UIImage*) shuffledCard;

@end

Но сейчас я не могу понять, как реализовать 'shuffle':

@implementation theKid

- (NSMutableArray *) cards {

    _cards = [[NSMutableArray alloc] initWithObjects:
          [UIImage imageNamed:@"One"],
          [UIImage imageNamed:@"Two"],
          [UIImage imageNamed:@"Three"],
          [UIImage imageNamed:@"Four"], nil];

    return _cards;

}

- (UIImage*) shuffledCard {
    shuffle *cards;

    return [cards objectAtIndex:0];
}

@end

Это просто влияет на пустой экран, когда я пытаюсь вызвать 'shuffledCard'. Любой совет высоко ценится.

2 ответа

Решение

Привет, я вставил несколько строк кода ниже, которые будут перемешивать массив NSMutable точно так же, как вы хотите.

NSMutableArray *  _cards = [[NSMutableArray alloc] init];
[_cards addObject:[UIImage imageNamed:@"One.png"]];
[_cards addObject:[UIImage imageNamed:@"Two.png"]];
[_cards addObject:[UIImage imageNamed:@"Three.png"]];
[_cards addObject:[UIImage imageNamed:@"Four.png"]];
[_cards addObject:[UIImage imageNamed:@"Five.png"]];

// Добавить приведенный ниже код в метод Shuffle

NSUInteger count = [_cards count];
for (NSUInteger i = 0; i < count; ++i)
{
    NSInteger remainingCount = count - i;
    int exchangeIndex = i + arc4random_uniform(remainingCount);
    [_cards exchangeObjectAtIndex:i withObjectAtIndex:exchangeIndex];
    UIImage * image = [_cards objectAtIndex:i];
}

Просто используйте этот API для перетасовки объекта exchangeObjectAtIndex:withObjectAtIndex: Обратитесь это как перетасовать объект в NSMutableArray?

Другие вопросы по тегам