2017-03-23 1 views
0

나는 변수를 갖고 싶어 내가 스위프트 3에서 오디오를 재생하는 방법이스위프트 3 : 문자열 변수를 기반으로 오디오 재생

do { 
    audioPlayer = try AVAudioPlayer(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: "name", ofType: "mp3")!)) 
    audioPlayer.prepareToPlay() 
    audioPlayer.play() 
} 
catch { 
print(error) 
} 

대신 "이름"의 설정 문자열이 될 것이라고보고 문자열은 다른 파일 이름에 해당하는 100 개의 다른 문자열 중 하나 일 수 있습니다. Swift는 단순히 문자열을 "이름"대신 넣으므로 수정이 불가능합니다.

답변

0

나는이 작동하지 왜 표시되지 않습니다 :

var audioPlayer: AVAudioPlayer! 
let string = "name" 
if let path = Bundle.main.path(forResource: string, ofType: "mp3") { 
    let url = URL(fileURLWithPath: path) 
    do { 
     audioPlayer = try AVAudioPlayer(contentsOf: url) 
     audioPlayer.prepareToPlay() 
     audioPlayer.play() 
    } 
    catch { 
     print(error) 
    } 
} 

어쨌든, 당신의 문자열 변수 문자열을 호출하면 아마 가장 좋은 방법이 아닙니다. 아마도 "resource", "resourceName"또는 "fileName"이라고해야할까요?

+0

이상한. 너는 완전히 옳다. 왜 내가 전에 문제가 있었는지 모르겠지만, 감사합니다 – EmperorPalpatine

+1

내 대답을 정확하게 표시 할 수 있습니까? :) – xxtesaxx

+0

@EmperorPalpatine 'AVAudioPlayer'가 유지되지 않았기 때문에 문제가 생겼을 수 있습니다. – staticVoidMan

0

저는이 기능을 사용하고 사운드의 이름과 유형을 전달합니다.

같은

func playSound(name: String, type: String) { 
    var Sound: AVAudioPlayer? = { 
     let url = URL(fileURLWithPath: Bundle.main.path(forResource: "\(name)", ofType: "\(type)")!) 
     do { 
      let player = try AVAudioPlayer(contentsOf: url, fileTypeHint: nil) 
      return player 
     } 
     catch {return nil} }() 
} 

전화를이 도움이

playSound(name: "The Sound", type: "mp4") 

희망! :) 만약 그렇다면 엄지 손가락 업 : D