Всякий раз, когда вы хотите цикл некоторого целочисленного значения, полезно просто использовать оператор по модулю во время приращения. Общий шаблон
counter = (counter + 1) % maxValue;
Это гарантирует, что счетчик всегда будет между 0 и (maxValue - 1), что идеально для циклического перемещения по массиву с элементами maxValue.
Я также рекомендовал бы быть гибким в отношении фактического количества звуков, которые вы можете воспроизводить, и имен файлов. Таким образом, вы можете просто хранить названия своих звуков в NSAarry.
в вашем классе у вас должно быть два поля. Массив, который содержит названия звуков и целое число, которое содержит номер текущего звука для воспроизведения:
NSUinteger currentSound;
NSMutableArray *soundArray;
Инициализируйте ваш массив. Например, в viewDidLoad ...
currentSound = 0;
// get the base URL of the app bundle
NSURL *baseURL =[NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]];
NSMutableArray *sounds = [[NSMutableArray alloc] init];
// remember to release the array and the player objects on dealloc.
// add sounds...
NSError *p_error = nil;
[sounds addObject: [[AVAudioPlayer alloc] initWithContentsOfURL:
[NSURL URLWithString: @"1.wav" relativeToURL: baseURL] error: &p_error]];
// check error an initialize other sounds...
... теперь в действии, которое запускается при нажатии кнопки, вы делаете ...
AVAudioPlayer *player = [soundArray objectAtIndex: currentSound];
currentSound = (currentSound + 1) % [soundArray count];
[player play];
Оператор по модулю (%) будет работать таким образом, чтобы, когда currentSound равнялся количеству объектов в массиве, он переворачивал обратно на 0.