1. Google
2. Stack Overflow https://stackoverflow.com/
3. Implement
4. Docs https://developer.apple.com/documentation
5. Customise
Google과 Stack Overflow로 방법을 찾고 코드로 구현한다.
코드의 의미를 찾아본다.
코드를 커스터마이징한다.
<구글 검색법>
What I want my app to do + Which programming language + Which resource
ex) Play sound Swift StackOverflow
Stak Overflow에선 가장 최근 답변을 적용해보기
<Apple documentation 으로 모르는 용어 확실히 확인하기>
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player: AVAudioPlayer?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func keyPressed(_ sender: UIButton) {
playSound()
}
func playSound() {
//forResource: sound Name
//ofTpe: sound type
guard let path = Bundle.main.path(forResource: "C", ofType:"wav") else { return }
let url = URL(fileURLWithPath: path)
do {
player = try AVAudioPlayer(contentsOf: url)
player?.play()
} catch let error {
print(error.localizedDescription)
}
}
}
Stack Overflow로 찾은 버튼을 누르면 Audio가 재생되는 코드이다. 코드를 확인했으면 Apple 공식문서로 모르는 클래스, 함수를 꼭 확인하자.
먼저 Apple 공식문서에 AVFoundation 을 검색해보자.
https://developer.apple.com/documentation/avfoundation/
AVFoundation Framwork 중에 Audio 재생, 녹음, 프로세싱은 이 부분을 확인하면 되는 것을 알 수 있다.
클릭하면 AVFoundation Framwork가 갖고있는 클래스를 보여준다. 기본 재생 및 녹음 클래스는 위와 같다.
Audio 재생과 관련된 AVAudioPlayer 클래스를 클릭해보자.
선언부터 class 가 갖고 있는 함수를 확인할 수 있다.
AVAudioPlayer 는 객체임을 알 수 있고, 이 객체에 파일 URL을 달아서 재생하는 것.
Bundle: Resource 묶음인데, 구조적인 디렉토리로 저장되어 가져올 수 있는 것이라고 알면 될 것 같다.
즉, 특정 Resource를 로드하려면 Bundle로 데려와야 한다.
그리고 기본&가장 많이 사용하는 경로는 main이다. Bundle.main
C.wav 파일을 가져오려면 위 Path 함수를 쓰면 된다.
즉 맨 위 코드는 AVAudioPlayer이 Audio를 재생하기 위해선 Audio Url 이 필요했고, Url은 Bundle.main.path 로 가져와서 넣은 것! Bundle.main.url 도 됨!
P.S) 빠른 찾기 방법은 option키 누르고 해당 글자 클릭하는 것!
'📱 App Development Study > iOS🍎' 카테고리의 다른 글
[Udemy iOS & Swift Bootcamp] Button UIControl Event (0) | 2023.03.21 |
---|---|
[Udemy iOS & Swift Bootcamp] 함수 하나에 Button 여러개 달기 (feat. Button currentTitle) (0) | 2023.03.18 |
[Udemy iOS & Swift Bootcamp] Auto Layout And Responsive UIs (1) | 2023.03.15 |
[Udemy iOS & Swift Bootcamp] Section4: Swift Programming Basics (0) | 2023.02.26 |
[Xcode13 이슈] imageLiteral 명령어 입력안될 때 (0) | 2023.02.26 |