Today I Learned

20210604 Apple Documentation with Xylophone app -1

돌맹이시터 2021. 6. 5. 21:25

 

실로폰 어플을 만들면서, 

어플을 만들 때 Apple Documentation의 도움을 받는 방법을 배울 것이다.

 

 

 

먼저,

각 버튼에 대한 IBAction을 만들어준다.

 

 

--- Challenge )

'C' button에 대한 IBAction을 만들고, 해당 버튼이 눌러질 때마다 "I got pressed"가 디버그 창에 출력되게 한다.

 

 

->

print 문장을IBAction 코드블럭에 넣어주면 끝

 

----

 

 

이제 각 버튼마다 asset으로 제공된 사운드파일을 각각 적용시키고자 한다.

어떻게 적용시키는지 알아내기 위해 다음의 방법을 따를 것이다.

 

 


 

프로그래밍에서 문제가 생겼을 때 해결하기 어려운 경우, 아래의 방법을 사용하는 것이 도움이 된다.

 

 

1. 구글링

 

<what I want my app to do> + <which programming language> + <which resource>

 

ex)

Play sound Swift Stackoverflow

 

 

 

 

2. StackOverflow

 

구글을 통해, 또는 stackoverflow에서 직접 검색해서 찾은 질문이 내가 찾고자 하는 것과 같다면,

채택되거나, upvote를 많이 받은 답변을 여러 개 살펴본다.

특히나 채택된 답변이 너무 오래전에 작성된 것이라면 현재 사용되는 언어의 버전과 차이가 많이 날 수 있다.

내가 사용하는 swift(or other language)의 버전과 동일하거나 비슷하다면

코드를 적용시켜본다. 

 

 

 

 

3. Implementing code

 

 

ex)

 

https://stackoverflow.com/questions/32036146/how-to-play-a-sound-using-swift

 

 

에 나와있는 답변을 참고로 하여, 

 

import AVFoundation

var player: AVAudioPlayer?

func playSound() {
    guard let url = Bundle.main.url(forResource: "soundName", withExtension: "mp3") else { return }

    do {
        try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)            
        try AVAudioSession.sharedInstance().setActive(true)

        /* The following line is required for the player to work on iOS 11. Change the file type accordingly*/
        player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)

        /* iOS 10 and earlier require the following line:
        player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileTypeMPEGLayer3) */

        guard let player = player else { return }

        player.play()

    } catch let error {
        print(error.localizedDescription)
    }
}

 

 

채택된 답변자가 올린 코드를 사용할 것이다.

 

 

먼저, 상단의 import AVFoundation을 

Viewcontroller.swift에 있는 import UIKit의 아래에 입력했다.

(AVFoundation == audiovisual foundational module)

 

class 안에,

var player도 선언해줬다.

 

func playSound~ 코드블럭은 class의 가장 마지막 부분에 그대로 붙여넣어준다. 

그리고, 필요한 부분을 수정한다.

 

 

 

 

 

4. Apple docs를 참고해서 코드분석 (developer.apple.com/documentation)

 

 

코드를 도입해서 수정한 뒤, 어플을 실행했을 때 원하는 대로 실행이 되는 것을 확인했다.

이제 Apple Documentation을 통해 이 코드에 대해 공부할 것이다.

 

https://developer.apple.com/documentation

 

 

Xcode의 설정에 따라 색이 다르겠지만,

보라색으로 적혀있는 부분들이 Apple's API에서 온 것들이고,

Apple Docs에서 찾아볼 수 있는 것들이다.

 

Apple Docs 홈페이지에서 상세한 내용을 확인할 수도 있지만,

조금 더 간단하게 볼 수 있는 방법도 있다.

 

Option 키를 누른 상태로 찾고자 하는 키워드를 클릭하면

 

 

해당 키워드에 대한 summary가 뜬다.

 

 

 

 

 

5. 원하는대로 code를 직접 사용

 

 

StackOverflow에서 얻은 코드가 정확하게 내가 원하는 코드가 아니기 때문에,

Apple Docs에서 이해한 내용을 바탕으로 수정해서 사용하면 된다.

 

 

 

제공받은 프로젝트의 README.md에 최종적으로 사용할 코드가 있기 때문에 그걸 사용해줬다.

 

 

 

 

훨씬 코드가 줄어들었음을 볼 수 있다.