2012-01-31 3 views
0

У меня есть этот код, который работает. У меня есть два вопроса.iOS: Синтаксис NSUrl

  1. Как установить каталог в «Поддерживаемые файлы»?
  2. Как использовать переменную в имени файла? Мне нужно, чтобы вытащить mp3 любого животного на основе переменной.
- (void)playAnimal{  
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/Sheep.mp3", [[NSBundle mainBundle] resourcePath]]];   
    NSError *error; 
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
    audioPlayer.numberOfLoops = 0;   
    if (audioPlayer == nil) 
     NSLog([error description]); 
    else 
     [audioPlayer play]; 
} 

Я новичок в Objective-C, так много синтаксических вещей являются новыми для меня, а также общие методы. Спасибо за ваше терпение!

ответ

5

Используйте следующее:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Sheep" ofType:@"mp3"]]; 
NSURL *url = [NSURL fileURLWithPath:path]; 

Когда ваши ресурсы копируются в связке, они не сохраняют свою структуру каталогов. Просто укажите ресурс по имени, и он найдет путь для него.

Подобно тому, как FYI, следующие работы, а также:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Sheep.mp3" ofType:@""]]; 
NSURL *url = [NSURL fileURLWithPath:path]; 

Это может быть полезно, если у вас есть набор ресурсов, логически сгруппированных в PLIST и вы программно чтение таких проблем. Например:

// reference to a dictionary with the entry 'Sheep.mp3' 
NSString *resourceName = [dictionary objectForKey:item1]; 
NSString *path = [[NSBundle mainBundle] pathForResource:resourceName ofType:@""]]; 
NSURL *url = [NSURL fileURLWithPath:path]; 
+0

Супер. У меня было это и не строилось, потому что я не знал, что пути были решены автоматически ... Спасибо! –

Смежные вопросы