Перестановка 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?