Область объявления переменной url
начинается в точке объявления (когда вы пишете NSURL *url
) и заканчивается в конце окружающего блока (в }
). Каждое из этих объявлений url
находится в блоке (между {
и }
), но вы пытались использовать объявление вне любого из блоков, которые содержат объявление. Таким образом, к тому времени, когда вы попытаетесь его использовать, в области действия уже не будет объявлен идентификатор url
.
Чтобы исправить это, переместите объявление из блоков, затем присвойте переменную из блоков:
NSString *url = nil;
if(i == 1) {
url = …;
} else if(i==2) {
url = …;
} else {
url = …;
}
player = [[AVAudioPlayer alloc]
initWithContentsOfURL:[NSURL fileURLWithPath:url] error:NULL];
[player play];
В качестве альтернативы:
NSString *url = nil;
switch (i) {
case 1: url = …; break;
case 2: url = …; break;
default: url = …; break;
}
или даже:
NSString *url = (1 == i)? val1 : (2 == i)? val2 : valDefault;