2012-01-31 3 views
0

このコードは現在動作しています。私には2つの質問があります。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、同様に次のような作品、として:あなたは論理的にplistの中で一緒にグループ化されたリソースのセットを持っていて、プログラムでこれらを読み出している場合

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

これは有用である可能性があります。例:

// 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

スーパー。私はパスが自動的に解決されたことを知らなかったので、これを持っていてビルドしなかった...ありがとう! –

関連する問題