我有這樣的一段代碼起着在我的iPhone我的mp3文件,它的工作原理後:的iOS使用未申報indentifier的if-else語句
if(i == 1) {
NSString *url = [[NSBundle mainBundle]pathForResource:@"fart" ofType:@"mp3"];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:url] error:NULL];
[player play];
} else if(i==2) {
NSString *url = [[NSBundle mainBundle]pathForResource:@"fart6" ofType:@"mp3"];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:url] error:NULL];
[player play];
} else {
NSString *url = [[NSBundle mainBundle]pathForResource:@"fart7" ofType:@"mp3"];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:url] error:NULL];
[player play];
}
正在改變的唯一線路是的NSString * URL。當我嘗試執行下面的代碼清理時,出現「使用未聲明的標識符'url'」的錯誤。
if(i == 1) {
NSString *url = [[NSBundle mainBundle]pathForResource:@"fart" ofType:@"mp3"];
} else if(i==2) {
NSString *url = [[NSBundle mainBundle]pathForResource:@"fart6" ofType:@"mp3"];
} else {
NSString *url = [[NSBundle mainBundle]pathForResource:@"fart7" ofType:@"mp3"];
}
player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:url] error:NULL];
[player play];
爲什麼NSURL不明白從上面的if-else語句中設置了NSString * url?
鑑於資源包和類型相同,您的if/else塊可以設置文件名,從中可以生成URL,所以還有一種減少代碼重複的機會。 在這種情況下,我還建議你使用switch/case而不是一堆if/else語句。 – Baglan
謝謝EmptyStack,Jeremy Sherman和Baglan!我希望我能給你所有的支票標記,以便你的解釋和解決方案! – user785179