iOS: синтаксис NSUrl - PullRequest
       9

iOS: синтаксис NSUrl

0 голосов
/ 31 января 2012

В настоящее время у меня есть этот код, который работает. У меня два вопроса.

  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, поэтому многие синтаксические вещи являются новыми для меня, а также общие методы. Спасибо тебе за твое терпение!

1 Ответ

5 голосов
/ 31 января 2012

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

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

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

Так же, как и к вашему сведению, работают также следующие:

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];
...